Philipp Hasenfratz: in Schleife Hash $key-> $value zuweisen

Beitrag lesen

Halihallo Andreas

foreach $item (@tmp_data){
       chomp($item);
       if (defined $item && $item==$min){
                                [...]

Was bezweckst du damit? - Klar, $item soll definiert sein, aber warum _muss_ es dann auch noch gleich mit $min sein? - Wie setzt du $min?

Zum Hintergrund:
Ich habe je eine Tabellen-Zeile aus der Excel-Tabelle im Array @tmp_data, den ich mit deiner Hilfe sortiert und min/max extrahiert habe. Das Problem, nicht in jeder Spalte steht ein Wert, daher hat der Array einige leere Elemente zwischendurch, vermutlich steht daher in $min 0 oder was ähnliches, da hätte ich aber gerne den niedrigsten vorhandenen Wert! Kann ich irgendwie alle leeren Elemente aus dem Array löschen? Dann wäre es kein Problem!

Aha, mal versuchen:

my @array = qw( ... );
my $cnt = 0;
foreach (@array) {
   next unless defined;
   push(@tmp_array,$_);
}
my @sorted = sort {$a<=>$b} @tmp_array;
my $min = shift @sorted;
my $max = pop @sorted;

Was sagst Du dazu? Wobei ich langsam für meinen Geschmack zu viele Schleifen verwende...

Ist glaub ich OK.
Übrigens, wenn du schon dabei bist und über die Anzahl der Schleifen herziehst (*g*):
mach doch alles in einer und zwar ohne sort und shift und pop...

kannst ja einfach über jedes Element iterieren, next unless defined und if ($min > $_) {$min = $_} bzw if ($max < $_) {$max = $_}

Viele Grüsse

Philipp