将Perl中的for循环结果存储为单个变量

时间:2015-07-11 20:12:00

标签: perl for-loop

我目前正在for循环中打印一个结果:

for (@data1, @data2, @data3) {
    print "$_" . " ";
} 

相反,我希望安静地处理循环,并将for循环的整个结果存储为变量,然后单独打印,如下所示:

print "$forloopresult";

我该怎么做?谢谢!

3 个答案:

答案 0 :(得分:3)

对于这种情况,我只使用join

my $foo = join(' ', @data1, @data2, @data3);
print "$foo "; # space at the end to emulate your for loop

答案 1 :(得分:1)

只需声明变量并在每一步附加数据:

my $result = "";
for (@data) {
    $result = $result."$_ ";
}

print $result;

答案 2 :(得分:0)

如果您打算保留print语句,但是将文本转到变量而不是控制台,那么这也是可能的。如果传递对该变量的引用而不是文件名

,则可以打印到标量变量

看起来像这样。我已声明$forloopresult并将\$forloopresult作为open的第三个参数传递。 Data::Dump的输出显示结果

use strict;
use warnings;

use Data::Dump;

my @data1 = qw/ a b c /;
my @data2 = qw/ aa bb cc /;
my @data3 = qw/ aaa bbb ccc /;

my $forloopresult;
open my $fh, '>', \$forloopresult or die $!;

for ( @data1, @data2, @data3 ) {
    print $fh "$_ ";
}

dd $forloopresult;

输出

"a b c aa bb cc aaa bbb ccc "