数组中的数组,如何在这里转储值?

时间:2012-06-13 05:54:02

标签: perl

我在这里做了一个小例子,我应该如何在数组中转储数组的值?

多个数组,包含字符串值和数字,现在我按第二个值对数组进行排序,并按顺序读取第一个字段的值。

my @a = { "A" , 123 };
my @b = { "B" , 9 };

my @entries = ();
push @entries , \@a;
push @entries , \@b;

@entries = sort { $a[1] cmp $b[1] } @entries;
for (@entries)
{
        print @_[0] , "\n"; // should be "A\nB" after for loop
}

我应该查看哪个文件?嗯......它不像数组中的普通数组,例如像$a[0][0]这样的语法。

1 个答案:

答案 0 :(得分:4)

第一个问题是你没有数组数组,你最终得到一个哈希数组数组,因为{}用来构造@a和{{1} }}。
(BTW,@ba作为标识符的选择很差,特别是在排序块中使用标量b$a时 - 您不希望将你在这些排序块中解除引用的内容混淆。)

如果你用以下方法解决这个问题:

$b

然后修复排序以按数字排序(my @a = ("A", 123); my @b = ("B", 9); 是字符串排序,cmp$a是数组引用):

$b

然后将您的sort { $a->[1] <=> $b->[1] } @entries; 行更改为:

print

你应该看到你期望的结果。

在脚本顶部添加print $_->[0], "\n"; ,并自由使用use strict; use warnings;模块进行调试。