$xNeTworKx: Fehlermeldung, aber richtige Ausgabe ?

hallo,
Kann mir einer mal sagen, was an der Schleife falsch ist ?

for (my $i = 0; $i <= $dateizaehler; $i++)  {
     if ($array[$i][1] gt $hoechste)  {
     $hoechste = $array[$i][1];
     $neueste_datei = $array[$i][0].$array[$i][1].$array[$i][2];
     }
}
print $neueste_datei;

Zur Info : $dateizaehler = 11, $hoechste = 0 (habs auch mit 1 probiert)
Wenn ich die Schleife, so wie sie jetzt ist, laufen lasse, erhalte ich einen "use of uninitialized value in string gt at line 32" Fehler : Line 32 wäre diese Zeile :      if ($array[$i][1] gt $hoechste)  {
Was ist das bitteschön falsch ? Das Ergebnis wird aber korrekt dargestellt. Warum kommt aber diese Meldung ?

$xNeTworKx.

  1. hallo,
    Kann mir einer mal sagen, was an der Schleife falsch ist ?

    for (my $i = 0; $i <= $dateizaehler; $i++)  {
         if ($array[$i][1] gt $hoechste)  {
         $hoechste = $array[$i][1];
         $neueste_datei = $array[$i][0].$array[$i][1].$array[$i][2];
         }
    }
    print $neueste_datei;

    Zur Info : $dateizaehler = 11, $hoechste = 0 (habs auch mit 1 probiert)
    Wenn ich die Schleife, so wie sie jetzt ist, laufen lasse, erhalte ich einen "use of uninitialized value in string gt at line 32" Fehler : Line 32 wäre diese Zeile :      if ($array[$i][1] gt $hoechste)  {
    Was ist das bitteschön falsch ? Das Ergebnis wird aber korrekt dargestellt. Warum kommt aber diese Meldung ?

    $xNeTworKx.

    meistens ist der Fehler eine Linie vorher, vielleicht fehlt nur ein semikolon oder es sind nicht alle klammern vorhanden??

    mfg
    teal

    1. Hallo,

      meistens ist der Fehler eine Linie vorher, vielleicht fehlt nur ein semikolon oder es sind nicht alle klammern vorhanden??

      nein, aber das komische ist, wenn ich diese Zeile so schreibe :      if ("$array[$i][1]" gt "$hoechste")  { , steht nur mehr Use of uninitialized String at line 34 statt ...in string gt .... da.
      Dann wenn ich die obere Zeile zu for (my $i = 0; $i le $dateizaehler; $i++)  {    #(le statt <=), dann kommt zwar keine Fehlermeldung mehr, aber er gibt nur mehr 3 x die Schleife statt 11 mal aus.
      Was ist da eigentlich los ?
      Ich poste mal das ganze Script bis zu der Stelle :

      use strict;
      my $leseordner = '.';
      my $schreibordner = 'neuer';

      my @array;
      my $vorletzte_datei = 0;
      my $dateizaehler = 0;
      my $i = 0;
      my $hoechste = 0;
      my $neueste_datei = 0;
      my @dateiliste;

      opendir(DIR,"$leseordner") or die "Kann Leseordner nicht oeffnen : $!\n";
          while (defined(my $file = readdir(DIR)))   {
                   if ($file =~ /^(\d+?_)(\d+?)(..{1,5})$/)   {
           push @dateiliste, $file;
           $array[$i][0] = $1;
                   $array[$i][1] = $2;
           $array[$i][2] = $3;
                open(FILE,"$leseordner/$file") or die "Kann $file nicht oeffnen : $!\n";
         local $/;
         my $inhalt = <FILE>;
         close FILE;
           $array[$i][3] = $inhalt;
           $i++;
           $dateizaehler++;
                   }
          }
      closedir DIR;

      for (my $i = 0; $i le $dateizaehler; $i++)  {
           if ("$array[$i][1]" gt "$hoechste")  {
           $hoechste = $array[$i][1];
           $neueste_datei = $array[$i][0].$array[$i][1].$array[$i][2];
           }
      print "$array[$i][1]\n";
      }
      print $neueste_datei;

      1. So, der Fehler war, weil in der for Schleife <= statt < gestanden ist, aber wieso ?

        1. So, der Fehler war, weil in der for Schleife <= statt < gestanden ist, aber wieso ?

          Blitzgneisser, ist doch klar, es gibt keinen Arrayindex von 11, weil der Index ja bei 0 beginnt =)