2013-05-31 87 views
4

我有一個哈希散列作爲鍵排序陣列中的

%value 
g=>10 
i=>55 
k=>4 
n=>100 

我有一個數組

@letters = ('k','i','n','g') 

請讓我知道如何我的散列鍵的排列順序排序。

+1

怎麼做你想要的結果,作爲一個哈希不保留訂單的訂單? – user1937198

+0

可以按照@letters的順序存儲到不同的散列中嗎? – user2441289

+0

哈希不保存順序,所以如果您需要它們,請使用數組數組或從cpan – user1937198

回答

5

如果你想在它們出現在@letters數組,然後以打印哈希值,

print join ",", @value{@letters}; 
4

代碼:

#!/usr/bin/perl 

use strict; 
use warnings; 
use Data::Dumper; 
use Tie::IxHash; 

my %hash = (
     g=>10, 
     i=>55, 
     k=>4, 
     n=>100, 
); 

my %sorted_hash; 
tie %sorted_hash, "Tie::IxHash"; 

my @array = ('k','i','n','g'); 
foreach(@array) 
{ 
     if(defined($hash{$_})) 
     { 
      $sorted_hash{$_} = $hash{$_}; 
     } 
} 

print Dumper(%sorted_hash); 

打印:

$VAR1 = 'k'; 
$VAR2 = 4; 
$VAR3 = 'i'; 
$VAR4 = 55; 
$VAR5 = 'n'; 
$VAR6 = 100; 
$VAR7 = 'g'; 
$VAR8 = 10; 

提,那我使用Tie :: ixHash模塊。否則,Perl將不會保存數組鍵。

這Perl模塊,實現Perl的哈希值是保存在哈希表元素添加

http://metacpan.org/pod/Tie::IxHash