Hej,
Angenommen ich habe eine subroutine, und in dieser noch eine while- oder for-Schleife. Wenn ich nun innerhalb der while-Schleife in der sub die Erklärung mache:
sub xyz {
while my ($i > 0) {
$i++;
usw.....
}
}
Das ist ganz schlecht aus zwei Gründen:
1.) Ist es syntaktisch falsch! Es müsste doch eher:
sub xyz {
while ( my $i > 0) {
$i++;
usw.....
}
}
heissen.
2.) ist das aus einem konkreten Grund problematisch: Damit deklarierst du $i bei der Prüfung des boolschen Ausdruckes jedesmal neu. Anders als z.B. bei einer for-Schleife, wo die Deklaration in der Initialisierung nur einemal vorgenommen wird:
for( my $i = 0; $i < 10; $i++ ) {
print( $i );
}
Und was sind denn Geltungsräume für my-Deklarationen, Subs, Schleifen, eventuell auch if-Anweisungen?
Mit my deklararierte Variablen gelten immer in dem Block, in dem sie deklarariert worden sind:
http://perldoc.perl.org/functions/my.html
Beste Grüße
Biesterfeld
Art.1: Et es wie et es
Art.2: Et kütt wie et kütt
Art.3: Et hätt noch immer jot jejange
Das Kölsche Grundgesetz