[Vienna-pm] use strict und dann wieder nicht....

LAUN Wolfgang wolfgang.laun at alcatel.at
Mon Feb 23 02:01:21 CST 2004


Nur um die Verwirrung nicht zu vergrößern, s.u.

> -----Original Message-----
> From: Thomas Klausner [mailto:domm at zsi.at]
> Sent: Sunday, February 22, 2004 9:44 PM
> To: vienna-pm
> Subject: Re: [Vienna-pm] use strict und dann wieder nicht....
> 
> 
> Hi!
> 
> On Sun, Feb 22, 2004 at 12:54:17PM +0100, Klaus Zahradnik wrote:
> 
> 
> > Im Kapitel "Subroutines" wird auch der "namespace" erkl?rt. Dazu gibt es
> > dann auch folgenden Code:
> > 
> > #!/usr/bin/perl
> > use warnings;
> >                                                             
>                     
> > $main::name = "Klaus Zahradnik";
> > $Fred::name = "Fred Flintstone";
> > $Barney::name = "Barney Rubble";
> >                                                             
>                     
> > print "\$name in package main is $name\n";
> > print "\$name in package Fred is $Fred::name\n";
> > print "\$name in package Barney is $Barney::name\n";
> > 
> > 
> > So steht der im Buch.
> 
> Scheint ein Fehler im Buch zu sein.
> 

Wo soll hier ein Fehler sein? (Wir sind in package main, also ist mit
$name - in Abwesenheit von use strict - $main::name gemeint.)


> Hast du auf ww.oreilly.com die Errata-Section deiner Verion von Learning
> Perl gecheckt?
> 
> > Ich habe allerdings use strict reingeschrieben. Das hatte dann diese
> > Fehlermeldung zu folge:
> > [klaus at cujo Scripts]$ ./globals.pl
> > Variable "$name" is not imported at ./globals.pl line 9.
> > Global symbol "$name" requires explicit package name at ./globals.pl
> > line 9.
> > Execution of ./globals.pl aborted due to compilation errors.
> > 
> > Wenn ich Zeile mit der ersten print Anweisung wie folgt ?ndere,
> > funktioniert das auch mit use strict:
> > print "\$name in package main is $main::name\n";
> > 
> > Im orignalzustand funktioniert das nat?rlich auch ohne use strict.
> 
> Klar. Ohne strict kann man immer&uberall variablen einfach so deklarieren.

      s/deklarieren/verwenden/

> Mit strict (bzw use stricts 'vars') muessen Variablen explizit deklariert
> werden (mit our, my, use vars oder 'fully qualified', i.e. 
> mit der package. (siehe perldoc strict))
> 

Da fehlt mir das Zeitwort:

   "...oder 'fully qualified', d.h. mit dem Package-Namen, angegeben werden."

lg
Wolfgang Laun
Transport Solutions Division
Alcatel Austria AG
Phone +43 1 27722 5662
Fax   +43 1 27722 1173



More information about the Vienna-pm mailing list