Mik*_*ike 0 sorting perl hash dump
我有一个像这样的哈希值的哈希值:
%hash = {
car => {
'10' => 'y',
'11' => 'y',
'12' => 'y',
'13' => 'y'
},
bus => {
'10' => 'y',
'11' => 'y',
'12' => 'y',
'13' => 'y'
},
tr => {
'10' => 'y',
'11' => 'y',
'12' => 'y',
'13' => 'y'
}
}
Run Code Online (Sandbox Code Playgroud)
我如何在 PERL 中打印这个哈希值(使用 Dumper),其中每个部分的键按上述顺序排序(10,11,12,13,14...)?
提前致谢,
三木
你可以试试
use Data::Dumper;
local $Data::Dumper::Sortkeys = 1;
# using custom sort function
# local $Data::Dumper::Sortkeys = sub { [ sort keys %{+shift} ] };
print Dumper {
car => {
'10' => 'y',
'11' => 'y',
'12' => 'y',
'13' => 'y'
},
bus => {
'10' => 'y',
'11' => 'y',
'12' => 'y',
'13' => 'y'
},
tr => {
'10' => 'y',
'11' => 'y',
'12' => 'y',
'13' => 'y'
}
}
Run Code Online (Sandbox Code Playgroud)
输出
$VAR1 = {
'bus' => {
'10' => 'y',
'11' => 'y',
'12' => 'y',
'13' => 'y'
},
'car' => {
'10' => 'y',
'11' => 'y',
'12' => 'y',
'13' => 'y'
},
'tr' => {
'10' => 'y',
'11' => 'y',
'12' => 'y',
'13' => 'y'
}
};
Run Code Online (Sandbox Code Playgroud)
$Data::Dumper::Sortkeys
可以设置为布尔值来控制哈希键是否按排序顺序转储。true 值将导致所有散列的键按照 Perl 的默认排序顺序转储。还可以设置为子例程引用,该子例程引用将为每个转储的哈希调用。在这种情况下,Data::Dumper 将为每个哈希调用一次子例程,并将哈希的引用传递给它。该子例程的目的是按照应转储的顺序返回对将转储的键数组的引用。使用此功能,您可以控制按键的顺序以及实际使用的按键。换句话说,该子例程充当过滤器,您可以通过它排除某些键的转储。默认值为 0,这意味着哈希键不排序。