作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 perl 编程的新手,很难从 C 语言适应到 perl。非常感谢您的帮助。
#!/usr/bin/perl
use warnings;
use strict;
use Data::Dumper;
my %tgs;
$tgs{"0"}{"1"} = 01;
$tgs{"0"}{"2"} = 02;
$tgs{"0"}{"3"} = 03;
$tgs{"1"}{"1"} = 11;
$tgs{"1"}{"2"} = 12;
$tgs{"1"}{"3"} = 13;
$tgs{"2"}{"1"} = 21;
$tgs{"2"}{"2"} = 22;
$tgs{"2"}{"3"} = 23;
print Dumper(\%tgs);
exit(0);
o/p 是
$VAR1 = {
'1' => {
'1' => 11,
'3' => 13,
'2' => 12
},
'0' => {
'1' => 1,
'3' => 3,
'2' => 2
},
'2' => {
'1' => 21,
'3' => 23,
'2' => 22
}
};
我按 1、2、3 的顺序输入了哈希值。但是当我打印时,顺序是先 1,然后是 0,然后是 2。为什么会这样?有什么办法可以控制吗?我需要控制它,因为我将在 foreach
循环中读取这些数据,假设它的顺序是 0 1 2 3...
最佳答案
Perl 不保证哈希中键的顺序。如果您必须按特定顺序遍历元素,您可以这样做:
for (sort keys %myhash) {
print Dumper($tgs{$_});
}
或者如果键不容易排序,您可能需要使用带有映射的数组:
my %tgs;
$tgs{"0"}{"1"} = 01;
$tgs{"0"}{"2"} = 02;
$tgs{"0"}{"3"} = 03;
$tgs{"1"}{"1"} = 11;
$tgs{"1"}{"2"} = 12;
$tgs{"1"}{"3"} = 13;
$tgs{"2"}{"1"} = 21;
$tgs{"2"}{"2"} = 22;
$tgs{"2"}{"3"} = 23;
my @tag_keys = qw(1 2 3);
然后使用:
foreach (@tag_keys) {
print Dumper($tgs{$_});
}
关于perl - 散列中的散列 - 如何存储元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19923532/
我是一名优秀的程序员,十分优秀!