Ohne Klammer kannst du die Funktion deklarieren wo du willst.
leider nicht!
die Funktion schon.
[code lang=Perl]
#!/usr/bin/perl -w
sub sub1
{
print "11: $v1=$v1\n";
hier gibt es noch keine Variabel $v1
}
my $v1 = 10;
Das muss vor der ersten Verwendung stehen, du solltest auf jeden Fall auch use strict verwenden!
Die Funktion kannst Du deklarieren wo Du willst, allerdings müssen
darin verwendete lexikalische Variablen im Quelltext (statisch) davor deklariert werden. Die Wertzuweisung muss (dynamisch) vor dem Funktionsaufruf erfolgt sein.
Wenn du globale (bzw. in dem Falle globale lexikalische) Variabeln verwenden möchtest, ja.
Wovon aber auch abzuraten ist.
Struppi.