7

我有很多行存储在 Perl 的单个变量中。

我想知道是否可以使用 <> 运算符读取这些行。

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 回答