Hi
Die Warnung kommt m.E. weil die Garbage Collection $x vernichtet wenn kein Bezug erhalten bleibt. Man könnte sagen Perl beschwert sich dass du kein Closure gebastelt hast:
Leider nicht ganz korrekt, die Warnung
Variable "$x" will not stay shared at /tmp/tst.pl line 10 (#1)
bedeutet dass die Variable $x in test() und in untertest() nach der ersten initialisierung nicht mehr identisch sind, d.h. selbst wenn ich test() nochmal aufrufe und $x anders belege wird untertest() weiterhin 2 ausgeben.
Beispiel:
use warnings;
sub test
{
my $x = shift;
sub untertest {
print $x++;
}
untertest();
}
test(1); #1
untertest(); #2
untertest(); #3
test(0); #4
untertest() #5
Jesus ....
bye
Kurt