7

Perl の 1 つの変数に多くの行が格納されています。

<> 演算子を使用してこれらの行を読み取ることができるかどうかを知りたいです。

4

3 に答える 3

14

本当に必要な場合は、ファイルハンドルを開くことができます。

use strict;
use warnings;

my $lines = "one\ntwo\nthree";
open my $fh, "<", \$lines;

while( <$fh> ) { 
    print "line $.: $_";
}

別の方法として、とにかくメモリ内に既にものがある場合は、それを配列に分割することもできます。

my @lines = split /\n/, $lines;   # or whatever
foreach my $line( @lines ) { 
    # do stuff
}

それはおそらく読みやすく、今後も維持しやすいでしょう。

于 2012-07-23T02:11:32.310 に答える
7

はい。に記載されているようにperldoc -f open、ファイルハンドルを開いてスカラー変数にすることができます。

my $data = <<'';
line1
line2
line3

open my $fh, '<', \$data;
while (<$fh>) {
    chomp;
    print "[[ $_ ]]\n";
}

# prints
# [[ line1 ]]
# [[ line2 ]]
# [[ line3 ]]
于 2012-07-23T02:10:01.750 に答える
0

便利な代替手段を見つけました。
<> は使用しませんが、使用したかのように動作します

for (split /^/, $lines) {
   ...
}

http://www.perlmonks.org/?node_id=745018

于 2014-04-03T13:50:26.323 に答える