Perl中的2D数组引用

时间:2014-01-21 01:10:23

标签: perl

我正在尝试在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一定是错的,但我不知道如何使它正确。 有人能帮助我吗?

此致

1 个答案:

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