如何排序Data::Printer的输出?



我正试图对Data::Printer的输出进行排序,但没有运气。我想按数值排序,而不是按键的字母顺序排序(这是默认的)。

如何对Data:: dump的输出进行排序?我猜Data::Printer的sort_methods的工作原理类似于Data::Dumper的Sortkeys:
#!/usr/bin/env perl
use strict;
use warnings FATAL => 'all';
use autodie ':default';
use DDP {output => 'STDOUT', show_memsize => 1};
my %h = (
'a' => 0,
'b' => 7,
'c' => 5
);
p %h, sort_methods => sub { sort {$_[0]->{$b} <=> $_[0]->{$a}} keys %{$_[0]} };

但是打印出来的是

{
a   0,
b   7,
c   5
} (425B)

,顺序依次为bca。奇怪的是,没有错误信息。

如何按hash值对Data::Printer的输出进行数字排序?

您没有转储对象,因此sort_methods不适用。如果是,此选项将按字母顺序排列

对于散列有一个sort_keys选项,但是它决定了在打印散列"内容时是否对键进行排序。它默认为1,并且没有提到设置顺序的方法。测试确认提供sub并不提供提供排序顺序的方法。

$ perl -e'use DDP; p {a=>5}->%*, sort_keys => sub { };'
[Data::Printer] 'sort_keys' property must be a scalar, not a reference to CODE at -e line 1.

最新更新