mc_gulasch
Erfahrenes Mitglied
Moin,
mein Prob ist kurz erklärt:
Ich habe ein mehrdimensionales Array der Form
Die Zeilen der obigen Liste sollen dann nach den Werten der ersten Spalte sortiert werden, so dass das Ergebnis dann lautet
Leider hab ich heute erst mit Perl angefangen und nicht so wirklich viel Ahnung, was man damit alles feines machen kann (jedenfalls mehr in der Stringverarbeitung als in C
)
Danke für Tipps & Links
Gulasch
//EDIT:
Ok, ich hab´s geschafft. War garnicht so einfach, hat aber den Vorteil, da ich die BuchstabenWERTE vergleiche, dass das ganze sogar case-sensitive ist:
EDIT 2//
War ein Fehler im Code:
muss natürlich
heissen. Oben bereits ausgebessert!
mein Prob ist kurz erklärt:
Ich habe ein mehrdimensionales Array der Form
Code:
bba spalte2 spalte3 ...
aab spalte2 spalte3 ...
acb spalte2 spalte3 ...
Code:
aab spalte2 spalte3 ...
acb spalte2 spalte3 ...
bba spalte2 spalte3 ...

Danke für Tipps & Links
Gulasch
//EDIT:
Ok, ich hab´s geschafft. War garnicht so einfach, hat aber den Vorteil, da ich die BuchstabenWERTE vergleiche, dass das ganze sogar case-sensitive ist:
Perl:
@matrix_sortiert = sort{&matrixSort}@matrix;
sub matrixSort
{
my $my_cmp = 0;
$min = 0;
if (length($$a[0])>=length($$b[0]))
{
$min=length($$b[0]);
}
else
{
$min = length($$a[0]);
}
$i=0;
while($i<$min)
{
$a_int=ord(substr($$a[0],$i,1));
$b_int=ord(substr($$b[0],$i,1));
if($a_int > $b_int)
{
$my_cmp= 1;
goto fin;
}
elsif($a_int == $b_int)
{
$my_cmp= 0;
}
elsif($a_int < $b_int)
{
$my_cmp= -1;
goto fin;
}
$i++;
}
fin:
$my_cmp;
}
EDIT 2//
War ein Fehler im Code:
Perl:
if (length($a[0])>=length($b[0]))
muss natürlich
Perl:
if (length($$a[0])>=length($$b[0]))
Zuletzt bearbeitet: