CPAN: Variable "$x" will not stay shared

Beitrag lesen

Das ist zwar richtig, aber in diesem Falle wohl sinnlos, denn diese Konstruktionen habe ich nicht in meinen Programmen

Doch, hast du. Dein Programm ist so schlecht aufgebaut, dass es nicht nur den Experten die Tränen in die Augen treiben würde, sähen sie den Quelltext.

Abhilfe: Stelle alle Subroutinen in den Quelltext nach oben. Schreibe deine Subroutinen so um, dass sie mit Parameterübergabe funktionieren und nicht auf Variablen eines übergeordneten Gültigkeitsbereichs zugreifen. Damit vermeidest du die unbeabsichtigten Closures.

Negativbeispiel:

  
    my $foo = 42; # scoped to end of package!  
    sub bar {  
        $foo = 23;  
    }  

Positivbeispiel:

  
    sub bar {  
        my ($param) = @_;  
        $param = 23;  
        return $param;  
    }  
  
    {  
        my $foo = bar(42); # tightened lexical scope  
    }  

und Internet laufen sie ja korrekt.

Das ist kein Ausschlusskriterium. Dieses Argument kannst du getrost knicken.

PS: Dieses Forum produziert im Allgemeinen keine brauchbare Antworten im Themenbereich Perl, außer ich lese mal wieder Tage später mit. Dieser Thread ist ein Musterbeispiel. Bessere Qualität gibt's bei: http://perl-community.de http://perlmonks.org http://stackoverflow.com