open(FH, "$ARGV[0]");
local $/;
$s=<FH>;
local %/;
@a=split /C:/i, $s;
shift @a;
foreach $a (@a) {
$a =~ s/[ \n]+/,/g;
$a =~ s/,$//;
print "C:", $a, "\n";
}
ここでの
local $/;
local %/;
は何を宣言しているのかお教えねがえますでしょうか。
回答した本人です。ポイントは不要です。
local %/; <-これは「$/」と書くつもりのミスタイプです。ですのでこの行はまったく不要です。ごめんなさい。
local $/; <-これは、Perlのレコードセパレータ(デフォルトでは改行)を、空にしています。$/ = undef; としても同じです。
使う場面としては、ファイルの内容を改行ごとに読み込むのではなく、一気に読み込むときに以下のようにして使います。「{}」の中でlocalを付けて使えば、一時的に、「$/」を空にして、「{}」の外に出れば、元の値(デフォルトの改行)に戻りますので、local をつけて使います。
{
local $/;
$contents = <FH> #通常は1行分しか読まないが、「$/」が空になっているので、最後まで一気に読み込みます。
}
参考URL
http://flex.ee.uec.ac.jp/texi/perl/perl_151.html
コメント(1件)