J'ai un hachageTrier un hachage comme clés dans un tableau
%value
g=>10
i=>55
k=>4
n=>100
J'ai un tableau
@letters = ('k','i','n','g')
s'il vous plaît laissez-moi savoir comment trier mon hachage dans l'ordre des clés du tableau .
J'ai un hachageTrier un hachage comme clés dans un tableau
%value
g=>10
i=>55
k=>4
n=>100
J'ai un tableau
@letters = ('k','i','n','g')
s'il vous plaît laissez-moi savoir comment trier mon hachage dans l'ordre des clés du tableau .
Si vous souhaitez imprimer des valeurs de hachage dans l'ordre dans lequel ils apparaissent dans le tableau @letters
puis,
print join ",", @value{@letters};
Code:
#!/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);
Prints:
$VAR1 = 'k';
$VAR2 = 4;
$VAR3 = 'i';
$VAR4 = 55;
$VAR5 = 'n';
$VAR6 = 100;
$VAR7 = 'g';
$VAR8 = 10;
Mention, que J'ai utilisé le module Tie :: ixHash. Sinon, Perl ne gardera pas les clés du tableau triées.
Ce module Perl implémente Perl hash qui préservent l'ordre dans lequel les éléments de hachage ont été ajoutés
comment voulez-vous le résultat, en tant que hachage ne conserve pas l'ordre? – user1937198
puis-je stocker dans un hachage différent dans l'ordre de @letters? – user2441289
Les hachages ne conservent pas l'ordre, donc si vous en avez besoin, utilisez un tableau de tableaux ou un Tie :: IxHash de cpan – user1937198