Halihallo Andreas
Ups, war ein Versehen ;-)
:-)
Juhuiii! Einer mehr im Boot ;-)
jajaja, aber noch kann ich auf mein PHP nicht verzichten, denn wie gesagt, in PERL bekomme ich einige Sachen nicht so ohne weiteres hin!
wird noch! ;)
my @preise = qw(50 100 150 75 30 80 300 225);
my @sorted = sort {$a<=>$b} @preise;
Was ist $a und $b? Wofür brauchst Du das? Was hat $a und $b für einen Wert?
$a und $b sind globale Variablen, die von sort benutzt werden. Du kannst durch die "subroutine" in {...} spezifizieren, _wie_ sortiert werden soll. $a und $b sind hierbei die einzelnen Elemente, die verglichen werden. Also
1 3 5 7 5 2
sort { $a <=> $b }
=> 1 <=> 3 = 1 => kleiner
=> 3 <=> 5 = 1 => kleiner
=> 5 <=> 7 = 1 => kleiner
...
=> 5 <=> 2 = 0 => grösser => umdrehen
=> 1 2 3 5 5 7
naja, ist wahrscheinlich etwas schneller implementiert...
so kannst du z. B. {uc($a) cmp uc($b)} verwenden, um Strings caseinsensitiv zu sortieren...
perldoc -f sort !
Und noch ein Problem, wenn ichg denn jetzt einen "Mehrdimensionalen Array" habe, bekomme ich dann z.B. den ersten eindimensionalen Array über @tmp_array = @preise[1]?
Ne, wie Christian schon sagte, sind Arrays wirklich nur Listen mit einzelnen Werten. D. h. es gibt nur ein $preise[1], aber kein @(Array). Aber, du hast ja in $preise[1] eine Referenz auf ein Array und das kannst du dann "benutzen":
my $ptr = $preise[1]; # Pointer auf das Array
my @tmp = @{$ptr}; # Abbild des anonymen Arrays machen
# Achtung: Array in Adresse $ptr wird
# _nicht_ verändert.
oder
$ptr->[1] = 'Hasi'; # jetzt wird der index 1 des _anonymen_
# Arrays durch 'Hasi' ersetzt.
$i=0;
foreach(@preise){
my @tmp_array = @preise[$i]
my @sorted = sort {$a<=>$b} @tmp_array;
my $minimal = shift @sorted;
my $maximal = pop @sorted;
$i++;
}
s. oben:
my @tmp_array = @{$preise[$i]}
Viele Grüsse
Philipp