Eri*_*sum 5 sorting perl hash foreach
我正在尝试对文件的哈希工作,并且工作必须按特定顺序完成.大多数人会说列表可以像这样订购:
for my $k (sort keys %my_hash)
{
print "$k=>$my_hash{$k}, ";
}
Run Code Online (Sandbox Code Playgroud)
不过,我需要非字母顺序,其实按键与一个字开始,然后_和他们去G到digits以L任何的M,P,R,T or D(例如word_G.txt,word_2.txt,..., word_P.txt).有没有办法按自定义顺序排序?
Sin*_*nür 13
有没有办法按自定义顺序排序?
是.见排序.
例如:
#!/usr/bin/env perl
use warnings; use strict;
my @order = qw(G 1 2 3 L M P R T D);
my %order_map = map { $order[$_] => $_ } 0 .. $#order;
my $pat = join '|', @order;
my @input = qw(word_P.txt word_2.txt word_G.txt);
my @sorted = sort {
my ($x, $y) = map /^word_($pat)[.]txt\z/, $a, $b;
$order_map{$x} <=> $order_map{$y}
} @input;
print "@sorted\n";
Run Code Online (Sandbox Code Playgroud)