Patrick Andrieu: Sortieren von Hausnummern: 1,1a,1b,2... usw

Beitrag lesen

Hallo hotti!

my @ar = qw(1 11 12 3 33 24 2a 2b 33a 33b 1a 35b 100c 3c 11a 11b 12c 222);

foreach my $h( sort { sh($a) <=> sh($b) } @ar){
print "$h\n";
}

sub sh{
my $h = shift;
$h =~ /^(\d+)(.*)$/;
return ($1 * 255) + (ord $2); # Wichtung setzen
}


> Bedingung ist o.g. Syntax der Hausnummern. Ggf. alles auf LowerCase umschießen.  
  
Du kennst nicht die [Schwartz'sche Transformation](http://www.stonehenge.com/merlyn/UnixReview/col64.html)? [ ] Doch. [ ] Nie gehört.  
  
C:\>perl -w  
~~~perl
my @ar = qw(1 11 12 3 33 24 2a 2b 33a 33b 1a 35b 100c 3c 11a 11b 12c 222);  
@ar = map { $_->[0] }  
      sort { $a->[1] <=> $b->[1] }  
      map { [ $_, ( /(\d+)/ )[0] ] } @ar;  
foreach (@ar) {print $_,"\n";}

^Z
1
1a
2a
2b
3
3c
11
11a
11b
12
12c
24
33
33a
33b
35b
100c
222

May the (Randal L.) Schwartz be with you!

Zigarre,

Gerne!

Viele Grüße aus Frankfurt/Main,
Patrick

--
_ - jenseits vom delirium - _

   Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?