Andreas: in Schleife Hash $key-> $value zuweisen

Beitrag lesen

Hi Philipp!

my @array = qw( ... );
my $cnt = 0;
foreach (@array) {
   $cnt++;
}

OK, das kannte ich

Ne, kann nicht sein. Das wird andere Ursachen haben. Du könntest uns den Source mal zeigen, dann könnten wir dir sagen, warum (ich hoffe, dass ich mich hier nicht irre). Aber dass ein Array mit der Länge 5 beim Index 123 bei defined true ergibt, ergibt IMO keinen Sinn.

ich habe mich falsch ausgedrückt. Das sieht bei mir wie folgt aus:

my @tmp_data = split /|/;
   my @sorted = sort {$a<=>$b} @tmp_data;
   my $min = shift @sorted;
   my $max = pop @sorted;

foreach $item (@tmp_data){
       chomp($item);
       if (defined $item && $item==$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!

my @array = qw( ... );
my $cnt = 0;
foreach (@array) {
   next unless defined;
   $cnt++;
}

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...

Grüße
Andreas