Ich habe ein paar Schlüssel eines Hash, die wie folgt aussehen:Sortierung gemischter Array in Perl
Test21
Test1
Test4
Test2
Test13
TestA
TestB
ich verschiedene Ansätze versucht, sie entweder die integrierte Sortierfunktion oder zusätzliche Unterprogramme verwenden zu sortieren, aber ich weiß nicht nur scheinen es richtig zu machen.
Meine gewünschte Ausgabe wäre:
Test1
Test2
Test4
Test13
Test21
TestA
TestB
Einer meiner Ansätze sah wie folgt aus:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper qw(Dumper);
my % hash = (Test1 => "Hello",Test21 => "Somedata", Test4 => "SomeMoreData",Test2 => "EvenMore",Test13 => "AlotMore",TestA => "Nope", TestB => "EvenMoreNope");
foreach my $keys(sort byNumberandAlpha keys %hash){
print "$keys\n";
}
sub byNumberandAlpha{
my @temp_a = split("Test",$hash{$a});
my $element_a = $temp_a[1];
my @temp_b = split("Test",$hash{$b});
my $element_b = $temp_b[1];
if ($element_a =~ /[0-9]/ && $element_b =~ /[0-9]/) {
$a <=> $b;
}else{
$a cmp $b;
}
}
OUTPUT:
Use of uninitialized value $element_a in pattern match (m//) at ExpirimentalSorting.pl line 23.
Test1
Test13
Test2
Test21
Test4
TestA
TestB
Jede Hilfe zu bekommen diese heraus ist sehr sehr geschätzt.
Oh Entschuldigung, das war ein Tippfehler - aktualisiert. – chrys