Faisant suite à mon message de ce matin, j'ai déplacé un hash contenant
des infos utilisateurs dans un fichier séparé de mon cgi. J'ai donc dans
un fichier config.pl (qui ne contient que ceci) :
Et maintenant j'ai :
Global symbol "%usersdb" requires explicit package name...
Je dois me tromper dans l'utilisation de do afin de bien initialiser
le hash mais je ne vois pas comment. Je pensais bien suivre pourtant
ce que dit le cookbook et le perldoc -f do. J'ai dû faire une erreur
d'appréciation, mais laquelle ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Denis -esp2008-
Bonjour,
Global symbol "%usersdb" requires explicit package name...
Cela est normal, parce que do " executes the contents of the file as a Perl script" comme le dit bien perldoc, donc n'inclut pas le script en question mais ce contente de l'exécuter. Il vaut mieux regarder du côté de require.
Bonne chance,
-- Denis
Bonjour,
Global symbol "%usersdb" requires explicit package name...
Cela est normal, parce que do " executes the contents of the file as a
Perl script" comme le dit bien perldoc, donc n'inclut pas le script en
question mais ce contente de l'exécuter.
Il vaut mieux regarder du côté de require.
Global symbol "%usersdb" requires explicit package name...
Cela est normal, parce que do " executes the contents of the file as a Perl script" comme le dit bien perldoc, donc n'inclut pas le script en question mais ce contente de l'exécuter. Il vaut mieux regarder du côté de require.
Bonne chance,
-- Denis
Serge Basterot
On 2005-04-12, Denis -esp2008- wrote:
Bonjour,
Global symbol "%usersdb" requires explicit package name...
Cela est normal, parce que do " executes the contents of the file as a Perl script" comme le dit bien perldoc, donc n'inclut pas le script en question mais ce contente de l'exécuter. Il vaut mieux regarder du côté de require.
C'est noté, je te remercie.
-- Serge
On 2005-04-12, Denis -esp2008- <esp2008@apinc.org.enlever-ceci.et.cela> wrote:
Bonjour,
Global symbol "%usersdb" requires explicit package name...
Cela est normal, parce que do " executes the contents of the file as a
Perl script" comme le dit bien perldoc, donc n'inclut pas le script en
question mais ce contente de l'exécuter.
Il vaut mieux regarder du côté de require.
Global symbol "%usersdb" requires explicit package name...
Cela est normal, parce que do " executes the contents of the file as a Perl script" comme le dit bien perldoc, donc n'inclut pas le script en question mais ce contente de l'exécuter. Il vaut mieux regarder du côté de require.
C'est noté, je te remercie.
-- Serge
Samuel Mouni
On 2005-04-12, Denis -esp2008- w rote:
Bonjour,
Global symbol "%usersdb" requires explicit package name...
Otherwise, demands that a library file be included if it hasnât alr eady been included. The file is included via the do-FILE mechanism, which is essentially just a variety of "eval". Has semantics similar to the following subroutine:
sub require { my ($filename) = @_; if (exists $INC{$filename}) { return 1 if $INC{$filename}; die "Compilation failed in require"; } my ($realfilename,$result); ITER: { foreach $prefix (@INC) { $realfilename = "$prefix/$filename"; if (-f $realfilename) { $INC{$filename} = $realfilename; $result = do $realfilename; last ITER; } } die "Canât find $filename in @INC"; }
if ($@) { $INC{$filename} = undef; die $@; } elsif (!$result) { delete $INC{$filename}; die "$filename did not return true value"; } else { return $result; } }
Note that the file will not be included twice under the same specified name.
.s'nuoM
On 2005-04-12, Denis -esp2008- <esp2008@apinc.org.enlever-ceci.et.cela> w rote:
Bonjour,
Global symbol "%usersdb" requires explicit package name...
Otherwise, demands that a library file be included if it hasnât alr eady
been included. The file is included via the do-FILE mechanism, which is
essentially just a variety of "eval". Has semantics similar to the
following subroutine:
sub require {
my ($filename) = @_;
if (exists $INC{$filename}) {
return 1 if $INC{$filename};
die "Compilation failed in require";
}
my ($realfilename,$result);
ITER: {
foreach $prefix (@INC) {
$realfilename = "$prefix/$filename";
if (-f $realfilename) {
$INC{$filename} = $realfilename;
$result = do $realfilename;
last ITER;
}
}
die "Canât find $filename in @INC";
}
if ($@) {
$INC{$filename} = undef;
die $@;
} elsif (!$result) {
delete $INC{$filename};
die "$filename did not return true value";
} else {
return $result;
}
}
Note that the file will not be included twice under the same specified
name.
Otherwise, demands that a library file be included if it hasnât alr eady been included. The file is included via the do-FILE mechanism, which is essentially just a variety of "eval". Has semantics similar to the following subroutine:
sub require { my ($filename) = @_; if (exists $INC{$filename}) { return 1 if $INC{$filename}; die "Compilation failed in require"; } my ($realfilename,$result); ITER: { foreach $prefix (@INC) { $realfilename = "$prefix/$filename"; if (-f $realfilename) { $INC{$filename} = $realfilename; $result = do $realfilename; last ITER; } } die "Canât find $filename in @INC"; }
if ($@) { $INC{$filename} = undef; die $@; } elsif (!$result) { delete $INC{$filename}; die "$filename did not return true value"; } else { return $result; } }
Note that the file will not be included twice under the same specified name.
.s'nuoM
Denis -esp2008-
Bonsoir,
require est un do .
Effectivement, j'ai répondu un peu vite, parce que le problème était signalé comme provenant du do (je viens de tester et il ne vient pas de là, d'ailleurs chez moi ça ne pose aucun problème le script en question).
-- Denis Promo de Denis en ce moment sur fclp en ce moment: pour une réponse donnée, une connerie dite, profitez-en!
Bonsoir,
require est un do .
Effectivement, j'ai répondu un peu vite, parce que le problème était
signalé comme provenant du do (je viens de tester et il ne vient pas de
là, d'ailleurs chez moi ça ne pose aucun problème le script en question).
--
Denis
Promo de Denis en ce moment sur fclp en ce moment: pour une réponse
donnée, une connerie dite, profitez-en!
Effectivement, j'ai répondu un peu vite, parce que le problème était signalé comme provenant du do (je viens de tester et il ne vient pas de là, d'ailleurs chez moi ça ne pose aucun problème le script en question).
-- Denis Promo de Denis en ce moment sur fclp en ce moment: pour une réponse donnée, une connerie dite, profitez-en!
Alex Marandon
On 2005-04-12, Serge Basterot wrote:
Bonsoir Serge,
des infos utilisateurs dans un fichier séparé de mon cgi. J'ai donc dans un fichier config.pl (qui ne contient que ceci) :
%usersdb = ( [...]
et l'appel correspondant dans le cgi :
do 'config.pl'; [...]
Global symbol "%usersdb" requires explicit package name...
Je vois plusieurs solutions :
- indiquer explicitement le nom de package comme le dit le message d'erreur :
%main::usersdb
- désactiver le controle sur les variable avec un
no strict 'vars';
avant l'appel de ta variable
- déclarer l'utilisation de la variable de package avec
use vars qw(%usersdb);
en début de script
Je préfère la dernière.
On 2005-04-12, Serge Basterot <sergeNOSP@Mblouk.net> wrote:
Bonsoir Serge,
des infos utilisateurs dans un fichier séparé de mon cgi. J'ai donc dans
un fichier config.pl (qui ne contient que ceci) :
%usersdb = (
[...]
et l'appel correspondant dans le cgi :
do 'config.pl';
[...]
Global symbol "%usersdb" requires explicit package name...
Je vois plusieurs solutions :
- indiquer explicitement le nom de package comme le dit le message d'erreur :
%main::usersdb
- désactiver le controle sur les variable avec un
no strict 'vars';
avant l'appel de ta variable
- déclarer l'utilisation de la variable de package avec
des infos utilisateurs dans un fichier séparé de mon cgi. J'ai donc dans un fichier config.pl (qui ne contient que ceci) :
%usersdb = ( [...]
et l'appel correspondant dans le cgi :
do 'config.pl'; [...]
Global symbol "%usersdb" requires explicit package name...
Je vois plusieurs solutions :
- indiquer explicitement le nom de package comme le dit le message d'erreur :
%main::usersdb
- désactiver le controle sur les variable avec un
no strict 'vars';
avant l'appel de ta variable
- déclarer l'utilisation de la variable de package avec
use vars qw(%usersdb);
en début de script
Je préfère la dernière.
Laurent Wacrenier
Serge Basterot écrit:
Faisant suite à mon message de ce matin, j'ai déplacé un hash contenant des infos utilisateurs dans un fichier séparé de mon cgi. J'ai donc dans un fichier config.pl (qui ne contient que ceci) :
Faisant suite à mon message de ce matin, j'ai déplacé un hash contenant
des infos utilisateurs dans un fichier séparé de mon cgi. J'ai donc dans
un fichier config.pl (qui ne contient que ceci) :
Faisant suite à mon message de ce matin, j'ai déplacé un hash contenant des infos utilisateurs dans un fichier séparé de mon cgi. J'ai donc dans un fichier config.pl (qui ne contient que ceci) :