Struppi: Textdatenbank sortieren nach mehreren Felder

Beitrag lesen

@sortiert = map { $_->[0] }

sort { $a->[1] cmp $b->[1] || $a->[2] cmp $n->[2] || $a->[3] <=> $b->[3] }
map { [$,(split (/| /,$))[0,1,2]] } @lines ;


>   
>   
> Das funktioniert auch mehr oder weniger. Ich habe bloss das Problem dass wenn ich 1 und 2 stellige Zahlen haben das Sortieren nicht richtig klappt.  
  
Wieso? Das klappt doch in deiner Version besser als in meiner.  
~~~perl
#!/usr/bin/perl -w  
use strict;  
  
my @data = <DATA>;  
  
my @sortiert = map { $_->[0] }  
sort { $a->[1] cmp $b->[1] || $a->[2] cmp $b->[2] || $a->[3] <=> $b->[3] }  
map { [$_,(split (/\|/,$_))[0,1,2]] } @data;  
  
use Data::Dumper;  
print Dumper \@sortiert;  
  
__DATA__  
Microsoft|Office 2000|7.0|Vollversion|  
Microsoft|Office 95|6.0|Vollversion|  
Microsoft|Windows NT|4.0|Vollversion|  
Microsoft|Windows 2000|5.0|Vollversion|  
Microsoft|Windows XP|5.1|Vollversion|  
Adobe|Photoshop 7|7.0|Vollversion|  
Adobe|Photoshop CS|8.0|Vollversion|  
Adobe|Photoshop CS|10.1|Vollversion|  
Adobe|Photoshop CS|8.2|Vollversion|  

Darf ich Dich noch etwas fragen. Für was benötigst Du das Modul (use Data::Dumper;)?

Für die Ausgabe des Arrays.

Struppi.