我正在尝试在Perl中执行一个将数据加载到2D数组中的子程序:
sub load {
my $separator = shift;
my $i = 0;
while(<STDIN>) {
@temp = split(/$separator/, $_);
@arr[$i] = \@temp;
$i++;
}
return @arr;
}
@array = load(":");
print "$array[0][0] $array[1][0]";
示例文件,我们可以将其命名为x:
a:b:c:d
z:x:c:v
执行脚本:
cat x | perl name
并且答案应该是“a z”而不是“z z”。我知道\ @temp一定是错的,但我不知道如何使它正确。 有人能帮助我吗?
此致
答案 0 :(得分:3)
为了拥有一个自包含的示例,我将STDIN
替换为DATA
:
use warnings;
use strict;
sub load {
my $separator = shift;
my @arr;
while(<DATA>) {
chomp;
my @temp = split(/$separator/, $_);
push @arr, \@temp;
}
return @arr;
}
my @array = load(":");
print "$array[0][0] $array[1][0]\n";
__DATA__
a:b:c:d
z:x:c:v