Perl 数组中的数组,如何在此处转储值?
我在这里做一个简单的例子,我应该如何在数组中转储数组的值 多个数组,其中包含一个字符串值和一个数字,现在我按第二个值对数组排序,并按顺序读取第一个字段的值Perl 数组中的数组,如何在此处转储值?,perl,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) {
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]
第一个问题是,这里没有数组数组,因为用于构造@a
和@b
(顺便说一句,
a
和b
作为标识符是糟糕的选择,特别是考虑到在排序块中使用标量$a
和$b
,您不想把自己与这些排序块中的解引用混淆。)
如果您使用以下方法解决此问题:
my @a = ("A", 123);
my @b = ("B", 9);
然后将排序固定为数字排序(cmp
是字符串排序,$a
和$b
是数组引用):
你应该看到你期望的结果
增加
使用严格;使用警告代码>位于脚本顶部,并充分利用Data::Dumper
模块对其进行调试。第一个问题是,这里没有数组,最终会有一个哈希数组,因为您使用{}
来构造@a
和@b
(顺便说一句,a
和b
作为标识符是糟糕的选择,特别是考虑到在排序块中使用标量$a
和$b
,您不想把自己与这些排序块中的解引用混淆。)
如果您使用以下方法解决此问题:
my @a = ("A", 123);
my @b = ("B", 9);
然后将排序固定为数字排序(cmp
是字符串排序,$a
和$b
是数组引用):
你应该看到你期望的结果
增加使用严格;使用警告代码>位于脚本顶部,并自由使用数据::转储程序模块对其进行调试。和$a[1]cmp$b[1]
应该是$a->[1]$b->[1]
@a
和@b
不会干扰排序,正如您在这种情况下所看到的那样。@ikegami:谢谢,在我的测试中已经解决了这个问题,但是忘记了:)至于@a
,这里确实不是问题,但无论如何最好避免它们(在我看来)。它们最好避免,因为它们通常都是糟糕的名字。不适用于与排序的任何不存在的关系。这太傻了。$a[1]cmp$b[1]
应该是$a->[1]$b->[1]
@a
和@b
不会影响排序,就像你在这种情况下看到的那样。@ikegami:谢谢,在我的测试中已经解决了这个问题,但忘了:)至于@a
,这里确实没有问题,但无论如何最好避免它们(在我看来).它们最好避免使用,因为它们通常都是蹩脚的名字。不适用于与排序的任何不存在的关系。那太傻了。
print $_->[0], "\n";