Bonjour,
j'ai un tableau de chaines de caracteres, chaque chaine se terminant par deux digits en hexadecimal. Je voudrais trier le tableau selon ces valeurs hexa... j'ai essaye pleins de trucs sans succes. J'en suis la:
sub test($)
{
s/^.*([0-9a-zA-Z]{2})$/$1/;
hex;
}
@opcodes = sort {test($a) <=> test($b)} @entries;
foreach (@opcodes)
{
print "$_\n";
}
|
j'ai des warnings a l'execution et le tableau n'est pas trie finalement.
Use of uninitialized value in hex [...] |
Use of uninitialized value in substitution [...] |
Je me dis que $a et $b sont indefinis au moment ou ils sont passes en parametres a test, mais dans ce cas je dois pas avoir compris comment marche sort.
Sinon j'ai essaye sans passer par une fonction intermediaire:
@opcodes = sort {hex($a =~ s/^.*([0-9a-zA-Z]{2})$/$1/) <=> hex($b =~ s/^.*([0-9a-zA-Z]{2})$/$1/)} @entries; |
Plus de warnings, mais a l'affichage j'ai juste la valeur prise par $1, et c'est toujours pas trie.
Quelqu'un pourrait m'expliquer ou me guider vers la solution?
merci d'avance ![:) :)](https://forum-images.hardware.fr/icones/smile.gif)
Message édité par Shabang le 16-08-2005 à 11:07:36