explicit package name?
muenzchen
- perl
Hallo!
Ich habe mal ein eher längeres Perlscript mit "user strict" durchlaufen lassen und habe eine ellenlange Liste von Fehlern bekommen. Diese Fehler waren aber für jede Variable die gleichen nämlich
Global symbol "$k" requires explicit package name at...
was ist dieser explicit package name ?
Vielen Dank schon einmal für eure Hilfe!
Hi!
Global symbol "$k" requires explicit package name at...
was ist dieser explicit package name ?
Ich glaube, das willst Du nicht wirklich wissen. ;-) Viel wichtiger duerfte fuer Dich sein, dass Du alle Variablen mit
my $k;
oder
my ($i, $j);
deklarieren musst, bevor Du sie verwenden kannst. Genau dazu ist ja use strict da.
So long
doch sicher will ich wissen was ein explicit package name ist !
*gier*
nein, wirklich. das mein ich ernst. isses so schlimm?
hi!
doch sicher will ich wissen was ein explicit package name ist !
Siehe perldoc perldiag
[1]:
=== cut ===
Global symbol """"%s"""" requires explicit package name
(F) You've said "use strict vars", which indicates
that all variables must either be lexically scoped
(using "my"), or explicitly qualified to say which
package the global variable is in (using "::").
=== cut ===
"Lexical scope" ist der lexikalische Gültigkeitsbereich, d.h. der
Block bzw. Bereich in deinem Programm, in dem eine bestimmte Variable
gültig ist. Wird eine Variable nicht -- zb. mit my -- für einen
bestimmten Gültigkeitsbereich deklariert, wäre dieser Bereich global,
was bei der Verwendung von "use strict;" nicht erlaubt ist.
bye, Frank!
[1] notfalls unter http://www.perldoc.com/
.............................................................:)
Hallo,
"Lexical scope" ist der lexikalische Gültigkeitsbereich, d.h. der
Block bzw. Bereich in deinem Programm, in dem eine bestimmte Variable
gültig ist. Wird eine Variable nicht -- zb. mit my -- für einen
bestimmten Gültigkeitsbereich deklariert, wäre dieser Bereich global,
was bei der Verwendung von "use strict;" nicht erlaubt ist.
Es würde, um der Vollständigkeit Ehre angedeien zu lassen, auch funktionieren, wenn Du Variablen mit (z.B.) $package::variablenname ansprechen würdest, ohne diese mit my einzuführen. So würde
#!/usr/bin/perl -w
use strict;
$main::abc = 1;
print $main::abc;
keinen Fehler verursachen.
Variablen ständig so zu notieren wäre dann doch etwas mühselig, aber genau das ist es, was die Fehlermeldung bezüglich 'expicit package name' eigentlich aussagt.
Grüße
Klaus