我将两个数组内容写入文件:
@a1 = ('ABC', 'DEF', 'GHI');
@b1 = (1234, 6789, 7635);
open my $fh, ">", "log.txt" or die "Cannot open log.txt: $!";
foreach ( @a1, @a2 ) {
print $fh "$_\n";
}
close $fh;
输出:
ABC
DEF
GHI
1234
6789
7635
我想以下列方式将其写入日志文件:
ABC 1234
DEF 6789
GHI 7635
我不确定如何实现它。
答案 0 :(得分:4)
您可以使用List::MoreUtils
pairwise
运算符
喜欢这样
use strict;
use warnings 'all';
use List::MoreUtils 'pairwise';
my @a1 = qw/ ABC DEF GHI /;
my @b1 = qw/ 1234 6789 7635 /;
my @pairs = pairwise { [ $a, $b ] } @a1, @b1;
print "@$_\n" for @pairs;
ABC 1234
DEF 6789
GHI 7635
如果这是所有你想对这些对,那么你可以完全避免中间列表并写
pairwise { print "$a $b\n" } @a1, @b1;
具有相同的结果
请注意,如果一个数组比另一个数组短,那么在较短数组结束后,$a
或$b
将设置为undef
。你必须适当地处理
答案 1 :(得分:1)
如果@a1
和@b1
的长度始终相同:
use strict;
use warnings;
my @a1 = qw( ABC DEF GHI );
my @b1 = qw( 1234 6789 7635 );
open my $fh, ">", "log.txt" or die "Cannot open log.txt: $!";
for my $i (0..$#a1){
print $fh "$a1[$i] $b1[$i]\n";
}
或者:
use feature qw/ say /;
say $fh join(' ', $a1[$_], $b1[$_]) for 0 .. $#a1;