2

私はperlを初めて使用しますが、ファイルを開こうとして、そこからいくつかの行を読み取ろうとしています。

これまでのコードは次のようになります。

open FILE, "file.txt" or die "can not open file"; 
while (<FILE>) { 
  print if ($.== 3..5)
}

しかし、取得する行を変更できる必要があります。したがって、これらの 3 と 5 の数値は変数である必要があります。

また、誰かがこのコードをよりよく理解するのを手伝ってくれますか? 私は何ドルだろうと思っています。は正確であり、印刷コマンドを配列またはそれらの行でさらに作業する何かに置き換えるにはどうすればよいですか?

ありがとうございました!

4

2 に答える 2

3

構文に注意してください。例を実行するperl -MO=Deparse,-pと、perl がそれを次のように解釈することが示されます

(open(FILE, 'file.txt') or die('can not open file'));
while (defined(($_ = <FILE>))) {
((($. == 3) .. 5) and print($_));

運が良ければ、デフォルトで (入力行番号) を..使用するため、範囲演算子は期待どおりに機能します。$.

定数の代わりに変数を使用するには、単に使用します

print if $. == $x .. $. == $y;
于 2012-07-25T13:53:15.840 に答える
0
$ perl -E'say for "aa".."ah"' | perl -ne'print if 3..5'

ドキュメント$.に従って定数を使用する場合は使用する必要はありませんが、変数を使用する場合は明示的に言及する必要があります。

perl -E'say for "aa".."ah"' | perl -ne'BEGIN{($f,$t) = splice@ARGV,0,2;}print if ($.==$f)..($.==$t)' 3 5
于 2012-07-25T22:02:51.090 に答える