人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

質問1200038868で回答をいただいた件について質問です。

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 %/;

は何を宣言しているのかお教えねがえますでしょうか。

●質問者: porinki07
●カテゴリ:コンピュータ
✍キーワード:ARGV open print
○ 状態 :キャンセル
└ 回答数 : 1/1件

▽最新の回答へ

1 ● yoshifumi1975

回答した本人です。ポイントは不要です。

local %/; <?これは「$/」と書くつもりのミスタイプです。ですのでこの行はまったく不要です。ごめんなさい。

local $/; <?これは、Perlのレコードセパレータ(デフォルトでは改行)を、空にしています。$/ = undef; としても同じです。

使う場面としては、ファイルの内容を改行ごとに読み込むのではなく、一気に読み込むときに以下のようにして使います。「{}」の中でlocalを付けて使えば、一時的に、「$/」を空にして、「{}」の外に出れば、元の値(デフォルトの改行)に戻りますので、local をつけて使います。

{

local $/;

$contents = <FH> #通常は1行分しか読まないが、「$/」が空になっているので、最後まで一気に読み込みます。

}

参考URL

http://flex.ee.uec.ac.jp/texi/perl/perl_151.html

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ