Markus Bauer: Use of uninitialized value in concatenation (.) or string

Servus.

Bin echt schon verzweifelt. Ich weiss was die verdammte Meldung bedeutet trotzdem MUSS sie weg.

find({ wanted => &d }, "/mnt/data");

sub d
{
  my $file = $File::Find::name;
  return unless -f $file;
  (....)
}

Also wirklich ein ganz NORMALES Anwendungsgebiet von find. Nur kommt diese verdammte Meldung ab und zu und ich kann machen, was ich will. Egal, ob ich $file vorher mit "" initialisiere oder verschiedene Abfragen mache...

Wie bring ich das weg??

Danke

  1. Hallo Markus,

    return unless -f $file;

    Du meinst sicher

    return unless $file && -f $file;

    Grüße,
     CK

    --
    To define recursion, we must first define recursion.
    http://wwwtech.de/
  2. Bin echt schon verzweifelt. Ich weiss was die verdammte Meldung bedeutet trotzdem MUSS sie weg.

    Die Fehlermeldung kommt 100% nicht aus den Zeilen die du zeigst, da hier gar keine Stringverkettung stattfindet.
    Auch $file sollte immer definiert sein, da das ja ein Ergebnis einer anderen Funktion ist.

    find({ wanted => &d }, "/mnt/data");

    sub d
    {
      my $file = $File::Find::name;
      return unless -f $file;

    Ich vermute, dass du mit dem Rückgabewert weiter arbeitest und daher die Meldung erhälst.

    Also hilft dir evtl.:
    return '' unless -f $file;

    Struppi.