Hallo,
nach dem Studium der empfohlenen Literatur habe ich jetzt ein neues Problem.
In dem nachfolgenden Programm habe ich ursprünglich die Funktion p1 aufgerufen und danach deklariert. Da kam die Meldung
'main::sub1() called too early to check prototype ...'
Daraufhin habe ich es mit der Funktion sub2 gerade umgekehrt gemacht, nämlich Deklaration und danach den Aufruf.
Da kam aber wieder eine Meldung (siehe unten)
Ich kenne es von anderen Sprachen, dass man die Funktionsdefinition zu Programmbeginn oder irgendwann später machen kann.
Wie ist es bei Perl?
#!/usr/bin/perl -w
sub sub2 ()
{
print "21: \$v1=$v1\n";
}
my $v1 = 10;
print "00: \$v1=$v1\n";
sub1 ();
sub2 ();
sub sub1 ()
{
print "11: \$v1=$v1\n";
}
Ergebnis:
main::sub1() called too early to check prototype at F:\cgi-bin\p1.pl line 8.
Name "main::v1" used only once: possible typo at F:\cgi-bin\p1.pl line 4.
00: $v1=10
11: $v1=10
Use of uninitialized value in concatenation (.) or string at F:\cgi-bin\p1.pl line 4.
21: $v1=
Gruß
Thomas