我在这里做了一个小例子,我应该如何在数组中转储数组的值?
多个数组,包含字符串值和数字,现在我按第二个值对数组进行排序,并按顺序读取第一个字段的值。
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]
这样的语法。
答案 0 :(得分:4)
第一个问题是你没有数组数组,你最终得到一个哈希数组数组,因为{}
用来构造@a
和{{1} }}。
(BTW,@b
和a
作为标识符的选择很差,特别是在排序块中使用标量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;
模块进行调试。