如何对 Data::Printer 的输出进行排序?
How to sort output from Data::Printer?
我正在尝试对 Data::Printer 的输出进行排序,但没有成功。
我想按值按数字排序,而不是按字母顺序键(默认)。
灵感来自 How do you sort the output of Data::Dumper? 我猜 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)
但顺序应该是b
、c
,然后是a
。
奇怪的是,没有错误信息。
如何按哈希值对 Data::Printer 的输出进行排序?
您没有倾倒对象,因此 sort_methods
不适用。如果是这样,“此选项将按字母顺序排列它们”。
散列有一个sort_keys
选项,但它决定了“打印散列内容时是否对键进行排序”。它默认为 1
,并且没有提及设置顺序的方法。一项测试证实,提供子项并不能提供提供排序顺序的方法。
$ 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.
我正在尝试对 Data::Printer 的输出进行排序,但没有成功。 我想按值按数字排序,而不是按字母顺序键(默认)。
灵感来自 How do you sort the output of Data::Dumper? 我猜 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)
但顺序应该是b
、c
,然后是a
。
奇怪的是,没有错误信息。
如何按哈希值对 Data::Printer 的输出进行排序?
您没有倾倒对象,因此 sort_methods
不适用。如果是这样,“此选项将按字母顺序排列它们”。
散列有一个sort_keys
选项,但它决定了“打印散列内容时是否对键进行排序”。它默认为 1
,并且没有提及设置顺序的方法。一项测试证实,提供子项并不能提供提供排序顺序的方法。
$ 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.