Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 数组中的数组,如何在此处转储值?_Perl - Fatal编程技术网

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";