我正在嘗試對Data::Printer 的輸出進行排序,但沒有運氣。我想按值按數字排序,而不是按鍵(默認)按字母順序排序。
靈感來自如何對 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 的輸出進行數字排序?
uj5u.com熱心網友回復:
您沒有傾倒物件,因此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.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/340959.html
上一篇:如何洗掉沒有檔案擴展名的檔案?
