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

Peter J. Holzer hjp-vienna-pm-list at hjp.at
Sun Feb 22 07:05:27 CST 2004


On 2004-02-22 12:54:17 +0100, Klaus Zahradnik wrote:
> Hallo!
> 
> Ich lese gerade "Beginning Perl". Am Anfang des Buches wurde dem Leser
> erklärt, er solle doch _immer_ use strict; verwenden.
> 
> 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.

Konsistenz macht glücklich, wenn man rechtzeitig drauf schaut, dass man
sie hat, wenn man sie braucht ;-)

> 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.
[...]
> Ich weiss jetzt nicht mehr, was ich machen sollte. To use strict or not
> to use strict?

Use strict! Du ersparst Dir damit viel Arbeit bei der Fehlersuche.

Wenn Du irgendwo tricksen *musst*, kannst Du strict immer noch lokal
abschalten:

{
    no strict;
    print "\$name in package main is $name\n";
}

In dem Fall wäre es aber wohl besser, $name einfach global zu
deklarieren:

    use vars qw($name);

oder

    our $name;

dann funktioniert es nämlich auch mir use strict.


> Oder anders gefragt, verwendet man das nur um Anfängern suberen Stil
> anzugewöhnen?

Nein, eher im Gegenteil. Anfänger lassen use strict gerne weg, weil sie
so schneller zu Ergebnissen kommen. Fortgeschrittene verwenden es, weil
schon mal stundenlang einen blöden Fehler gesucht haben, den perl mit
use strict selbst entdeckt hätte.

	hp

-- 
   _  | Peter J. Holzer    | I think we need two definitions:
|_|_) | Sysadmin WSR       | 1) The problem the *users* want us to solve
| |   | hjp at hjp.at         | 2) The problem our solution addresses.
__/   | http://www.hjp.at/ |    -- Phillip Hallam-Baker on spam
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://mail.pm.org/pipermail/vienna-pm/attachments/20040222/a8e69135/attachment.bin


More information about the Vienna-pm mailing list