Perlコーディング初心者質問スレ Part 45
■ このスレッドは過去ログ倉庫に格納されています
0001988
2005/12/08(木) 22:48:27ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0611nobodyさん
2006/01/12(木) 01:31:28ID:???バイナリかよ、って笑っちゃうぐらい
今は物好きしか使ってないんじゃない?
0612610
2006/01/12(木) 01:40:26ID:???環境変数直接扱い → CGI.pm
と変わってきたけど、結局、今はまた環境変数直接扱いの方が見直されてきたということで良いんでしょうか?
0614nobodyさん
2006/01/12(木) 07:19:00ID:???パフォーマンス的に問題が無ければ
何も考えないでCGI.pm使っておけば問題ないよ
0615nobodyさん
2006/01/12(木) 07:28:05ID:???0616nobodyさん
2006/01/12(木) 07:42:43ID:???逆を言えば、パフォーマンス的に問題があるかどうかわからない場合、CGI.pm使わない方が良い?
0617nobodyさん
2006/01/12(木) 07:59:39ID:???1日に何万ヒットもあったりレン鯖でCPUやメモリの制限に引っかかるようだったら
自前で用意したりカスタマイズしたほうが良いんじゃない
単純にデコードだけしたいんならCGI::Liteでもいいんじゃね?
結局はケースバイケース
0618nobodyさん
2006/01/12(木) 08:07:57ID:???パフォーマンスに困るぐらいのアクセスがあってから言えってんだ。
0619nobodyさん
2006/01/12(木) 09:08:02ID:???いや、俺のことだが。
0620nobodyさん
2006/01/12(木) 12:42:21ID:???0621nobodyさん
2006/01/12(木) 12:48:54ID:???初心者のうちは。
0622nobodyさん
2006/01/12(木) 13:25:04ID:???なんて言っても、痛い目を見ないと分かってくれないわけだが。
0625nobodyさん
2006/01/12(木) 14:41:25ID:???フォームをパースするだけにしか使わんから
自作した
0626nobodyさん
2006/01/12(木) 14:47:32ID:fUom/aNQ%COMMENT = (1 => "未設定", 2 => "重要", 3 => "ビジネス", 4 => "個人用");
%CLASS = ("#602000" => "none", "#FF0000" => "important", "#008040" => "business", "#0000BB" => "personal");
こんなハッシュがある状態で、
$color = "#008040";
という変数を使って、
%COMMENTの"ビジネス"を取得って可能でしょうか。
0627nobodyさん
2006/01/12(木) 14:51:45ID:???0628nobodyさん
2006/01/12(木) 15:07:23ID:fUom/aNQハッシュのキーと値をペアで取り出せるeach関数なんていうのがあったんですね!
%VALUE = (1 => "#602000", 2 => "#FF0000", 3 => "#008040", 4 => "#0000BB");
%COMMENT = (1 => "未設定", 2 => "重要", 3 => "ビジネス", 4 => "個人用");
%CLASS = ("#602000" => "none", "#FF0000" => "important", "#008040" => "business", "#0000BB" => "personal");
$color = "#008040";
while (($key, $value) = each (%VALUE)) {
if ($color eq $value) {
while (($new_key, $value) = each (%COMMENT)) {
if ($key eq $new_key) {
$comment = $value;
}
}
}
}
print $comment;
ありがとうございました。
0629nobodyさん
2006/01/12(木) 18:06:27ID:???例えばこう内側のループが消えるように。
while (($key, $value) = each (%VALUE)) {
if ($color eq $value) {
$comment = $COMMENT{ $value };
last;
}
}
0630nobodyさん
2006/01/12(木) 18:07:26ID:???$COMMENT{ $value }; → $COMMENT{ $key };
0631nobodyさん
2006/01/12(木) 18:36:39ID:???{
my %temp = reverse %VALUE;
$comment = $COMMENT{$temp{"#008040"]}
}
が楽だと思う。
0632nobodyさん
2006/01/12(木) 19:21:41ID:Xjv4jYTd更新めんどくてperlでhtmlファイル管理、生成のプログラム書いてみたんだけど、なにせド素人なもんで、そんで質問以下の構造のモノって鯖に負担になりますか?
-------------
上:ヘッダ一部、トップlogo部分
左;左メニュー、左メニューに日記の新着記事、左メニュー広告欄
中:中央センター上部広告、本文(※)、フッタ
右:右リンクメニュー、右メニューの広告欄
部品的に見てこれらでレイアウト(構成)されてるサイトなんですが「本文(※)」以外は、全ページの共通表示部分になるのです。
要するに、サイト全体の共通部分を上記の様に部品別に.logでバラバラに保存してそれをCGIでHTML生成する時に、上記の部品を一回一回読み込んで、配列に代入して、printで出力。
本文は別のログに保存してあって、それだけブラウザで編集可能、それも同時に読み込んで行って、htmlとして出力される作り。
本文が保存されているlogファイルは、数十ページの本文内容を、件名<>本文<>etcの様に、<>で区切って、改行別に保存(ページ数が増えるとドンドン重たくなる)
で、問題はここから★
サイト全体でページ数が200〜300ぐらいになるのです。(更新すりゃもっと増加)
こう言った作りだと、共通表示部分、例えば、「左メニュー.log」のコンテンツへのリンクを変更すれば、サイトのページ300ファイルを全部更新(html生成)し直さなくちゃいけない訳です。
ちなみに300ファイル一気に生成するわけではなくって、同じスクリプトを複数設置しているのでサイトのテーマ別、例えば「サイト案内」のコンテンツだけで10ファイルあって、
それらを複数のスクリプトで計300ファイル程度を生成する作りです。
なにせド素人なもんで、変な無鉄砲なモノした組めないです。情けない
これって、とゆうか、配列の乱用?と計、数メガにのぼるhtml生成って負担になりますか?
なんか自分で書いてて、何がなにやらよく分からん様になってきた。アホ文失礼。orz
0633nobodyさん
2006/01/12(木) 19:24:13ID:vLiWBj2uそれともっと簡潔に
でなきゃサイトを晒すか・・・
0634nobodyさん
2006/01/12(木) 19:32:13ID:???> 本文が保存されているlogファイルは、数十ページの本文内容を、件名<>本文<>etcの様に、<>で区切って、改行別に保存(ページ数が増えるとドンドン重たくなる)
本文が再帰してるように読める
0635nobodyさん
2006/01/12(木) 19:33:31ID:???ここが意味不明。
1つのHTMLファイルが数メガになるのか?
0636nobodyさん
2006/01/12(木) 19:50:39ID:vLiWBj2uログファイルは月ごとぐらいで更新する (といっても1年で1000ページとか行かないだろうから1年あたり1つのログでいいかも)
(ただそのファイルがぶっ飛んだらその年のページが全部飛ぶことになるので月ごとが安全っちゃ安全か)
ページ (行ね) には必ず ID を割り振る
これを条件として、CGI には テーマ ID、ログファイル名、ページ ID を渡す
ページ ID が取得できなければそのログ一覧を。
ログファイル名が取得できなければログ一覧 (各月の一覧か隔年の一覧なのかは自分で決めてね)
テーマ ID が取得できなければテーマ一覧を表示する。
こうすればページあたりのヒット数とか、テーマ別ヒット数とかが用意に取得できるようになる
0637nobodyさん
2006/01/12(木) 19:51:47ID:vLiWBj2uディレクトリで分けてもいいな
./テーマ ID /ログファイル
んでテーマ ID とするディレクトリにテンプレート用 HTML を置いておくとか
0638nobodyさん
2006/01/12(木) 20:47:10ID:???というかクエリー取得のためだけに CGI.pm 使ってる人って十中八九
「なんちゃってモジュール使っちゃってます厨」
でしょ。
おまえら資源のムダだから大人しく自分で車輪の再発明してろと(ry
0641nobodyさん
2006/01/12(木) 23:14:10ID:???普通にblog使ったら?
今あるデータをコンバートする方向で。
システム作るより、コンバータ書いた方が楽だと思う。
どういうデータにしたら良いかは、実際にここログとか無料のblogに入ってみて、
データを書き出してみれば分かるはず。
その形式で出力するように、今あるデータに対するフィルタを書く。
0642nobodyさん
2006/01/12(木) 23:14:14ID:pW3y8Hzchttp://hoge.com/ho/ge というのと hoge.com/hoge/ge が両方
<a href="http://hoge.com/ho/ge">hoge.com/ho/ge</a> というリンクになる
変換をしたいと思います。 これを正規表現で一発でやるというのは出来るのでしょうか?
0643nobodyさん
2006/01/12(木) 23:17:32ID:vLiWBj2u0644nobodyさん
2006/01/12(木) 23:19:36ID:???正規表現で処理する以前に、
hoge.com/hoge/ge
がURLであるかどうか、判断できないような…。
www*.hoge.com/hoge/ge
とかならURLと見なして処理することも出来るだろうけど。
0645nobodyさん
2006/01/12(木) 23:24:33ID:???サーバー側でやるような処理じゃないよ。ローカル側で処理すべき。
そもそも300ファイルすべてに左メニューとか右メニューとか必要なの?
上部に1本、パンくずリンクでもあれば済むんじゃないの?
なんの情報も生まない、しかも広告入りのメニューが左右を延々占領するのもかなわん。ユーザビリティの履き違えかエロサイトの仕様だ。
0647nobodyさん
2006/01/13(金) 00:08:31ID:???くらいで大雑把にとか。
0649nobodyさん
2006/01/13(金) 00:29:47ID:42x/OYc6テンプレみたいなあげ足取りですね
0650nobodyさん
2006/01/13(金) 00:30:59ID:???0651nobodyさん
2006/01/13(金) 00:35:03ID:???おまえらどこでそんな中途半端なモジュールの使い方覚えてきたのかと。
0652nobodyさん
2006/01/13(金) 00:37:15ID:???0653nobodyさん
2006/01/13(金) 00:41:22ID:???$domain = '[\w\-]+\.[\w\-\.]+';
$path = '\/[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+';
s/(http:\/\/|\b)($domain($path)?)/<a href=\"http:\/\/$2\">$2<\/a>/g;
0654nobodyさん
2006/01/13(金) 00:47:54ID:???0655nobodyさん
2006/01/13(金) 00:51:26ID:???ちゃんと取得できてるのか確認しながらコーティングするとこうなるんよ
0656nobodyさん
2006/01/13(金) 01:00:29ID:???0658nobodyさん
2006/01/13(金) 01:14:20ID:???0659nobodyさん
2006/01/13(金) 01:25:35ID:???正規表現で出来そうだけど、俺には無理w
0660nobodyさん
2006/01/13(金) 01:59:59ID:???普通にリンクされるならまだいいけど、@以前が切れる。
[email protected]ならfoo@<a href="http://example.com">example.com</a>みたいに。
0661653
2006/01/13(金) 02:23:13ID:???対処おk。
$domain = '[\w\-]+(\.\w[\w-]*\w)+';
$path = '\/[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+';
s/(http:\/\/|\s)($domain($path)?)/ <a href=\"http:\/\/$2\">$2<\/a>/g;
ドメイン名のそれぞれの部分は一文字より多いという姑息な手段で対処。
0662nobodyさん
2006/01/13(金) 02:32:04ID:???TLDがないと色々誤爆しそうなので幾つか勝手に固定。
http://user:[email protected]/ みたいものまでは考えないことにする。
my $regex_http = q{(?:h?t?t?p?:?//|(?<![@\w\-./]))([\w\-.]+(?:com|net|org|jp)/?[\w\-.!~*'();\/?:\&=+\$,%#]*)};
s|$regex_http|<a href="http://$1">http://$1</a>|g;
0663653
2006/01/13(金) 03:26:13ID:???ありがとうございます。 一生懸命読解を試みました。 (?:)とか(?<!)等は探して理解しました。
なるほど、玄人な道具ですね。 それから正規表現を|でくくると中でいちいち/をエスケープ
しなくていいというのも便利な技で参考になりました。 それからURLに使われる特殊
文字ってもっとあったのですね。
1つ質問。q{}ってなんでしょうか? ある種のクオートな気がしますが記述を
見つけられませんでした。
0664nobodyさん
2006/01/13(金) 03:33:08ID:???クォートとクォートのような演算子
ttp://namazu.org/~tsuchiya/perl/info/perl-ja_44.html#SEC44
0665nobodyさん
2006/01/13(金) 05:21:58ID:???flock(LOG, LOCK_EX);
@alldata = <LOG>;
close(LOG);
foreach $data (@alldata){
中略
}
print "<p>完了しました。</p>";
という構文で、ファイルの各行の文字列を読み取って、処理を行う、という動作をさせ、
終了時に「完了しました。」の文字列を表示、という風にしているのですが、
ファイルの行数が少なかった頃は何の問題もなく処理を完了していたのですが、
800行を超えた辺りから、「完了しました。」の文字を表示しないこともあります(ブラウザは完了したような振る舞いをします)。
また、処理の結果を見ても、ファイルの途中までしか処理されていないようです。
恐らくforeach文の回数が多すぎるからだと思うのですが、何か対処法は御座いませんでしょうか?
お教え下さいますようお願い致します。
0666nobodyさん
2006/01/13(金) 09:05:02ID:???コマンドラインでもダメってこと?
まさかレン鯖で実験してたりしないだろうな。
レン鯖だとしたら時間でプロセス切られてるだけだと思うが。
0667nobodyさん
2006/01/13(金) 13:00:33ID:???正規表現には qr// を。
http://perldoc.jp/docs/perl/5.6.1/perlop.pod#item_qr_STRING_imosx
0668nobodyさん
2006/01/13(金) 19:51:25ID:???http://2ch-eva.under.jp/uploader/file/src/up0018.txt
ftpにも対応しようとしたが挫折。ていうか正規表現でやることじゃないな。
というかこんな未熟な俺にも言わせてほしいことといえば
キャラクタクラスの中で \ 使うなよと。
# なんで\dじゃなくて[0-9]なんて書いてるんだorz
0670nobodyさん
2006/01/13(金) 21:05:28ID:???今度は中途半端に\d使ったことが…… orz
0671nobodyさん
2006/01/14(土) 00:23:37ID:???どうしても配列に格納しなけりゃならんのでなけりゃ、以下を試してみないか。
while (<LOG>) {
# 何ぞ処理
}
0672nobodyさん
2006/01/14(土) 00:49:22ID:???# 設定ファイル settei.pl
$CFG_HOGE=1;
$CFG_MOGE=2;
1;
#!/usr/local/bin/perl
require 'setttei.pl';
print "hoge=$CFG_HOGE, moge=$CFG_MOGE\n";
さて、これでuse strictを付け加えるとCFG_*変数に対してエラーが出ます。 そこで両方の
ファイルでmyとしたら設定はプログラムの方では見えないんですね。 こういうことを
use strict
で行うのはどうすればいいのでしょうか?
0673nobodyさん
2006/01/14(土) 00:52:41ID:???なんてこといってるとどうしょうもなくなるか。
パッケージとか名前空間とかで検索してみな。
0674672
2006/01/14(土) 01:50:37ID:???ありがとうございます。 模索してみました。
トライ1:
すべての$CFG_*を$main::CFG_*にする。 これでコンパイル出来、前と同じ振る舞いになりました。
しかしmain::だらけでうっとうしい。
トライ2:
settei.pl の頭にpackage main;と加える。 main::はsettei.plの中は無し。
こうしてメインで$main::CFG_*と参照すればやはり機能しました。
しかしメインで直に$CFG_と参照するように出来る方法が分かりませんでした。 メインで
my $CFG_* と宣言するとsettei.plでされた設定はメインでは見えませんでした。
う〜ん、よく分からん。
0675672
2006/01/14(土) 02:11:55ID:???こんなのはどうでしょうか。 今までCFG_と付けてたのをやめてsetttei.plは
package CFG;
$HOGE=1;
$HOGE=2;
1;
そしてメインではこれらを$CFG::HOGE, $CFG::MOGEで参照。 これが綺麗かな?
0676nobodyさん
2006/01/14(土) 02:44:14ID:???#--- MyConf.pm ---
package MyConf;
use strict;
use base 'Exporter';
our @EXPORT = qw($Foo $Bar);
our($Foo, $Bar) = (1,2);
1;
__END__
#!/usr/local/bin/perl -w
use strict;
use MyConf;
print $Foo, $Bar;
__END__
0677nobodyさん
2006/01/14(土) 03:24:19ID:???◆ config.pl
my(%config) = (
'fuga' => 1,
'hoge' => 2,
'gagaga' => "SEGA"
);
sub returnconfig{
return %config;
}
◆ main.cgi
require 'config.pl';
my(%config) = &returnconfig();
print $config{'fuga'};
わざわざ呼ばなきゃいけない&同じ内容がメモリ内に2つ存在するので効率悪いっちゃ悪いですが・・・
0679nobodyさん
2006/01/14(土) 03:43:59ID:???#--- config.file ---
use strict;
{
foo => 1,
bar => 2,
baz => [ 'a'..'z' ],
};
__END__
#!/usr/local/bin/perl -w
use strict;
my $conf = do '/path/to/config.file' or die;
print $conf->{'baz'}[7];
__END__
>>678
設定ファイルを Perl で書ける。
0681nobodyさん
2006/01/14(土) 04:44:08ID:???#--- 設定
package Setup;
use strict;
sub get{
bless( {
foo => 1,
hoge => 2,
array => [1,2,3]
} , $_[0] );
}
1;
__END__
#!/usr/local/bin/perl
use strict;
use Setup;
my $setup => Setup->get;
print $setup->{'foo'};
print $setup->{'array'}->[0];
__END__
0682nobodyさん
2006/01/14(土) 05:58:58ID:???>>666
レン鯖です。
やはりタイムアウト的な処理でしたか。
それを避ける方法は御座いますでしょうか?
>>671
open(LOG,"$datfile");
while ( $data = <LOG> ) {
処理
}
close(LOG);
であってますでしょうか?
0683nobodyさん
2006/01/14(土) 06:19:45ID:???処理がどんなことしてるかは知りませんが、たかだか 800 行程度でタイムアウト起こすような
貧弱サーバーそのものの利用を考えたほうが良いのではないのでしょうか?
>671
個人的には foreach の方が perl らしくて好き
foreach my $logline (<LOG>){
〜処理〜
}
0684nobodyさん
2006/01/14(土) 06:32:02ID:???0685nobodyさん
2006/01/14(土) 08:03:10ID:???自分は 682 さんではありませんが、1つ勉強になりました。
thx
0687nobodyさん
2006/01/14(土) 09:37:38ID:???0688nobodyさん
2006/01/14(土) 09:39:12ID:???リンクを踏むと、メーラーが立ち上がるようになっています。
が、mailto: に subject と body を含めて、かつ body には改行を含めたいのですが、どうしてもエラーになってしまいます。
以下を含める場合、どのように書けばよいのでしょうか ?
<持込に関して> ← subject
↓本文
@お名前[改行]
@ご住所[改行]
@お電話番号[改行]
<問い合わせ内容詳細>
ソースは ShiftJISになっています。よろしくお願いします。
0689nobodyさん
2006/01/14(土) 09:39:30ID:???use LWP::Simple;
$url = 'http://girls.twistys.net/preview/';
for ($i=1; $i<=3; $i++) {
$num = sprintf("%03d", $i);
$_ = get($url.$num."/");
s/\w*\d{1,2}\.jpg/push @jpgs, $&/eg;
foreach $jpg (@jpgs) {
getstore($url.$num."/".$jpg, $num.$jpg);
}
}
0690nobodyさん
2006/01/14(土) 10:13:25ID:???このスレの質問じゃねぇし
http://www.ring.gr.jp/pub/doc/RFC/rfc2368.txt
mailto:[email protected]
?subject=%8E%9D%8D%9E%82%C9%8A%D6%82%B5%82%C4
&body=%40%82%A8%96%BC%91O%5B%89%FC%8Ds%5D%0D
%0A%40%82%B2%8FZ%8F%8A%5B%89%FC%8Ds%5D%0D%0A
%40%82%A8%93d%98b%94%D4%8D%86%5B%89%FC%8Ds%5D
%0D%0A%3C%96%E2%82%A2%8D%87%82%ED%82%B9%93%E0
%97e%8F%DA%8D%D7%3E
上を一行に合わせれ
0691nobodyさん
2006/01/14(土) 10:43:53ID:???> 処理がどんなことしてるかは知りませんが、たかだか 800 行程度でタイムアウト起こすような
その行について、どんな処理をしてるかわからないのに800行で判断する、っていうのはどうかと。
行数で判断するんだったら7万行で、に置き換えてください。そして、タイムアウトするのを避ける方法を教えてください。
なんかコンビニバイト風情が、肉体労働者に「一日働いただけで疲れるのはどうかと」って言ってるのと同じかな
0692nobodyさん
2006/01/14(土) 10:56:45ID:???> 〜処理〜
> }
こんな処理を800行「程度」を越える量書くとは…… 俺のレン鯖にいないことを願おう。
0693nobodyさん
2006/01/14(土) 10:57:54ID:???せめて70万行とかさ
0694nobodyさん
2006/01/14(土) 11:32:10ID:???ありがとうございます。
実は、同じようにURLエンコードして、おっしゃられたように入れてみたのですが、エラーになってしまうんです。
元に戻すとサーバエラーはでなくなるので、記述の仕方がどこか違うようなんですが
perl の独特な記述の仕方があるのかと思って書き込ませて頂きました。
0695nobodyさん
2006/01/14(土) 11:33:21ID:???0696nobodyさん
2006/01/14(土) 11:50:37ID:???多分、ダブルクオートで囲って @ や % が変数に展開されてるに一票。
0697nobodyさん
2006/01/14(土) 12:07:44ID:???別にforeachでも問題なかろう。
それで問題が起きるなら、それこそ鯖が貧弱。
0698nobodyさん
2006/01/14(土) 12:14:40ID:???見直すしかないでしょ
データの量(行数だけでは分からないだろ)も処理の内容も
分からねーのに、何か教えてほしいなんて無理
0699nobodyさん
2006/01/14(土) 12:36:49ID:???馬鹿のプロセス切るのは「鯖が貧弱」
だからじゃなくて管理がしっかりしてるからでしょ。
「問題」じゃまったくないし。
まぁ実際 32kb で切ってたら別の問題だけどね。
お前は書かないほうがいいよ。
0700nobodyさん
2006/01/14(土) 12:53:21ID:???∩___∩
| ノ ヽ/⌒)
/⌒) (゚) (゚) | .|
/ / ( _●_) ミ/
.( ヽ |∪| /
\ ヽノ /
/ /
| _つ /
| /UJ\ \
| / ) )
∪ ( \
\_)
0701nobodyさん
2006/01/14(土) 12:56:32ID:???使っているサーバがエラー番号などが出ない仕様なんです。
「サーバエラーが発生しました…」という文章しか出ないので。
確かにダブルクォートで囲って有ります。$vout に代入されているようなんですが…。
その場合はどうすればいいでしょうか ?
0702nobodyさん
2006/01/14(土) 13:23:01ID:???よいこの約束
0703nobodyさん
2006/01/14(土) 15:29:20ID:???ログが十分に小さければ、foreachとwhileの違いだけで、変わる状況なんて無いね。
仮に、それで問題が起きるなら、プロセス辺りのメモリ割り当てが
かなり小さいぐらいしか考えられない(鯖が貧弱)。
ってことなんだが(苦笑)。
4年書き続けてきたけど、もうだめぽか、ここも。
0704nobodyさん
2006/01/14(土) 15:36:47ID:???0706nobodyさん
2006/01/14(土) 16:33:57ID:???他人の管理下にあるサーバで実験しない。自分が動かしているサーバで
実験すれば、そのログを見てデバッグできる。
>>1に書いてある通り、エラーの内容も貼れないんじゃ質問以前の問題だ。
>>703
4年もいるんだったらスルーすることぐらい覚えろよ。
0707nobodyさん
2006/01/14(土) 18:00:04ID:???とか書いてある時点でダメに決まってるじゃん。
それとも4年前からこんな感じだったの?
0709nobodyさん
2006/01/14(土) 19:59:22ID:???普通こうする。読み込みなら文句なしに最強。
> foreach( @FILE )
いわずと知れたKEMT仕様。そして何故か入門者ご用達。
でも頻繁に書き込み(書き込みロック)が必要な場合好んで使う人も。
> foreach( <$FH> )
謎仕様。ファイル開きっぱなしで配列展開。KEMTもびっくり。
■ このスレッドは過去ログ倉庫に格納されています