perl的问题,用print Dumper()输出hash能不能排序?直接print Dumper(\%hash);是无序的,怎么让他有序输出

如题所述

哈哈! 良久没见过这麼有水准的问题了.

先加一句
$Data::Dumper::Sortkeys = 1 ;
再print Dumper 时就会排序了!追问

先谢谢你
这个是按ASC码排出来的,比如1,11,111,2,22.。我想按数字大小排怎么弄?

追答

哈! 也是个好追问.. Perl 的 scalar 是可以使用 sub reference 的.
所以, 我会这麼做

$Data::Dumper::Sortkeys= sub{[sort {$a $b} keys %{$_[0]}]};
然後还是 print Dumper... 啦
如果要倒序出来, 就将 $a 和 $b 对调啦.

追问

哈哈我一直刷新你可算回了,虽然不太理解$_[0]这个东西不过总算排出来了 我都要哭了。持续关注,又不懂得我就问你了~

追答

如果说 sort {$a $b} keys %hash, 你能理解吗 ? 这个不难对吧!

那再深入一点说 sort {$a $b} keys %{$obj} 呢 ?
$x = {
A => 123,
B => 456

};
试试 print "$_ " sort {$a $b} keys %{$x} ;

最後就是

sub simpleDump {
print "$_ " sort keys %{$_[0]}; # 这个 $_[0] 即是 @_ 的第 1 个

}
simpleDump ( $x ) ;

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答