Thomas: Unklare Meldung

Beitrag lesen

Hallo Struppi,

Ohne Klammer kannst du die Funktion deklarieren wo du willst.

leider nicht!

  
#!/usr/bin/perl -w  
sub sub1  
  {  
   print "11: \$v1=$v1\n";  
  }  
my $v1 = 10;  
print "00: \$v1=$v1\n";  
sub1 ();  
  
Ergebnis  
  
Name "main::v1" used only once: possible typo at F:\cgi-bin\p1.pl line 4.  
00: $v1=10  
Use of uninitialized value in concatenation (.) or string at F:\cgi-bin\p1.pl line 4.  
11: $v1=  

Zum Zeitpunkt des Aufrufs der Funktion sub1 ist $v1 definiert und sie hat den Wert 10. Trotzdem ist die Variable in der Funktion nicht bekannt.
Laut Perl-Beschreibung ist die Variable bekannt ab dem Zeitpunkt der Deklaration, dies in Perl aber allerdings im statischen Sinne.
Dies ist ungwöhnlich, oder?

Man müsste daher wohl sagen:
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.
Gruß
Thomas

0 54

Unklare Meldung

Thomas
  • perl
  1. 0
    Struppi
  2. 0
    Patrick Andrieu
    1. 0
      Thomas
      1. 0
        Horst
        1. 0
          Thomas
          1. 0
            Struppi
            1. 0
              Horst
        2. 0
          Manuel B.
      2. 0
        Patrick Andrieu
      3. 0
        Daniel Thoma
        1. 0
          Thomas
          1. 0
            Patrick Andrieu
            1. 0
              Thomas
              1. 0
                Struppi
                1. 0
                  Patrick Andrieu
                2. 0
                  Thomas
                  1. 0
                    Struppi
                3. 0
                  Thomas
        2. 0
          Thomas nochmal
          1. 0
            Daniel Thoma
  3. 0
    Thomas
    1. 0
      Struppi
      1. 0
        Thomas
        1. 0
          Struppi
          1. 0
            Thomas
            1. 0
              Struppi
              1. 0
                Thomas
                1. 0
                  Struppi
                2. 0
                  Daniel Thoma
            2. 0
              Siechfred
              1. 0
                Thomas
                1. 0
                  Siechfred
                2. 0
                  Struppi
                  1. 0
                    Thomas
                    1. 0
                      Struppi
                    2. 0
                      Siechfred
                      1. 0
                        Thomas
                        1. 0
                          Kurt
                          1. 0
                            Thomas
                            1. 0
                              Kurt
                              1. 0

                                Kurzversion

                                Kurt
                              2. 0
                                Thomas
                                1. 0
                                  Kurt
                                  1. 0
                                    Thomas
                                    1. 0
                                      Kurt
                                      1. 0
                                        Struppi
                                        1. 0
                                          Kurt
                                        2. 0
                                          Kurt
                                          1. 0
                                            Struppi
                                      2. 0

                                        Klare Funktionsdefinitionen in Perl

                                        Kurt
    2. 0
      Siechfred
      1. 0
        Thomas
        1. 0
          Siechfred