5

テキスト ファイルをブロック単位で読み取るために使用されるPerlコードを理解しようとしています。

テキスト ファイルMYFILEは次のようになります。

First block
First Line: Something in here
Second Line: More here
Third Line: etc.

Second block
First Line: Something in here
Second Line: More here
Third Line: etc.

コードは、正規表現が見つかったブロックの行を抽出するために使用されます(そして、それは正常に機能します。私はそれを理解したいだけです)

これは私が理解していないコードの一部です:

local $/ = q||;
while (<MYFILE>) {
    do something;
}

誰かがラインlocal $/ = q||;が何をしているのか説明してもらえますか?

4

3 に答える 3

10

$/入力レコードセパレータです。「これは、「行」とは何かについての Perl の考えに影響を与えます」。空の文字列に設定すると''、空白行でレコードが分割されます。q||表記はパイプ内のものを引用するのでq||、 と同じ''です。さまざまな区切り文字をq接頭辞とともに使用できます:q(), q//も同じです。

于 2013-09-16T08:49:28.260 に答える
3
local $/ = q||; 

これにより、空行が「レコード区切り」として扱われます。

local $/ = q||;
    while(<$fh>) {
        # each loop, $_ will be a different record
        # the first will be "First block\nFirst Line: Something in here\nSecond Line: More here\nThird Line: etc.\n\n"
        # etc.
      }
于 2013-09-16T09:03:37.887 に答える