J'ai un petit souci, probablement pas bien méchant bien que titillant.
Voila mon bout de code :
for my $dir (@dirContent)
{
print "$dir ";
print "$dir " if (-M $dir > 1);
}
L'interpréteur me met un warning au niveau du "if" me stipulant que
"$dir" n'est pas initialisée... ce qui me semble tout à fait faux
puisque je n'ai pas de warning sur le 1er "print".
my(), tel que déclaré ci-dessus, ne fonctionne qu'au niveau local du
bloc "for", ai-je lu, mais il me parait abérrant que la variable ne soit
pas passée dans les sous-blocs. Y aurait-il de réaliser ça ?
Question subsidiaire: "if (-M DIRHANDLER > 1)" semble fonctionner avec
perl 5.6, mais pas avec perl 5.0. Est-ce le cas ?
for my $dir (@dirContent) { print "$dir "; print "$dir " if (-M $dir > 1); }
Peut-être voulez-vous faire:
foreach my $dir (@dirContent) { print "$dir "; print "$dir " if (-M $dir > 1); }
?
-- mzi
Emmanuel
Peut-être voulez-vous faire:
foreach my $dir (@dirContent) { print "$dir "; print "$dir " if (-M $dir > 1); }
?
Merci pour votre réponse.
J'obtiens malheureusement le même message d'erreur : Use of uninitialized value at D:scriptsbackup.pl line 51. Il me semble toutefois que "foreach" n'est qu'un synonyme de "for".
Emmanuel
Peut-être voulez-vous faire:
foreach my $dir (@dirContent)
{
print "$dir ";
print "$dir " if (-M $dir > 1);
}
?
Merci pour votre réponse.
J'obtiens malheureusement le même message d'erreur : Use of
uninitialized value at D:scriptsbackup.pl line 51.
Il me semble toutefois que "foreach" n'est qu'un synonyme de "for".
foreach my $dir (@dirContent) { print "$dir "; print "$dir " if (-M $dir > 1); }
?
Merci pour votre réponse.
J'obtiens malheureusement le même message d'erreur : Use of uninitialized value at D:scriptsbackup.pl line 51. Il me semble toutefois que "foreach" n'est qu'un synonyme de "for".
À mon avis, le problème est ailleurs: en exécutant seulement ce petit bout de code (for ou foreach), il n'y a pas d'erreur.
Essayez toujours:
foreach my $dir (@dirContent) { next unless defined $dir; print "$dir "; print "$dir " if (-M $dir > 1); }
Au cas où $dir pourrait être undef.
-- mzi
Emmanuel
À mon avis, le problème est ailleurs: en exécutant seulement ce petit bout de code (for ou foreach), il n'y a pas d'erreur.
Essayez toujours:
foreach my $dir (@dirContent) { next unless defined $dir; print "$dir "; print "$dir " if (-M $dir > 1); }
Au cas où $dir pourrait être undef.
$dir est bien défini, mais seulement de le bloc 'strict' du "for". L'interpréteur le voit comme "undef" dans le test du "if".
Même en ajoutant la ligne "next unless defined $dir" j'obtiens l'erreur. Logique puisque au niveau de cette instruction, $dir semble être bel et bien défini :/
Bizarre...
Merci de vous être penché sur mon problème en tout cas, si je trouve un workaround, je le posterai
Emmanuel
À mon avis, le problème est ailleurs: en exécutant seulement ce petit bout
de code (for ou foreach), il n'y a pas d'erreur.
Essayez toujours:
foreach my $dir (@dirContent)
{
next unless defined $dir;
print "$dir ";
print "$dir " if (-M $dir > 1);
}
Au cas où $dir pourrait être undef.
$dir est bien défini, mais seulement de le bloc 'strict' du "for".
L'interpréteur le voit comme "undef" dans le test du "if".
Même en ajoutant la ligne "next unless defined $dir" j'obtiens l'erreur.
Logique puisque au niveau de cette instruction, $dir semble être bel et
bien défini :/
Bizarre...
Merci de vous être penché sur mon problème en tout cas, si je trouve un
workaround, je le posterai
À mon avis, le problème est ailleurs: en exécutant seulement ce petit bout de code (for ou foreach), il n'y a pas d'erreur.
Essayez toujours:
foreach my $dir (@dirContent) { next unless defined $dir; print "$dir "; print "$dir " if (-M $dir > 1); }
Au cas où $dir pourrait être undef.
$dir est bien défini, mais seulement de le bloc 'strict' du "for". L'interpréteur le voit comme "undef" dans le test du "if".
Même en ajoutant la ligne "next unless defined $dir" j'obtiens l'erreur. Logique puisque au niveau de cette instruction, $dir semble être bel et bien défini :/
Bizarre...
Merci de vous être penché sur mon problème en tout cas, si je trouve un workaround, je le posterai
Emmanuel
Rue des Prairies
Bonjour à tous,
J'ai un petit souci, probablement pas bien méchant bien que titillant. Voila mon bout de code :
for my $dir (@dirContent) { print "$dir "; print "$dir " if (-M $dir > 1); }
L'interpréteur me met un warning au niveau du "if" me stipulant que "$dir" n'est pas initialisée... ce qui me semble tout à fait faux puisque je n'ai pas de warning sur le 1er "print".
my(), tel que déclaré ci-dessus, ne fonctionne qu'au niveau local du bloc "for", ai-je lu, mais il me parait abérrant que la variable ne soit pas passée dans les sous-blocs. Y aurait-il de réaliser ça ?
Question subsidiaire: "if (-M DIRHANDLER > 1)" semble fonctionner avec perl 5.6, mais pas avec perl 5.0. Est-ce le cas ?
D'avance merci,
Emmanuel
Bonsoir,
Je pense que ta variable $dir ne contient pas un nom de fichier existant. Ajoute : next unless(-e $dir); avant de faire ton test -M
Olivier.
Bonjour à tous,
J'ai un petit souci, probablement pas bien méchant bien que titillant.
Voila mon bout de code :
for my $dir (@dirContent)
{
print "$dir ";
print "$dir " if (-M $dir > 1);
}
L'interpréteur me met un warning au niveau du "if" me stipulant que
"$dir" n'est pas initialisée... ce qui me semble tout à fait faux
puisque je n'ai pas de warning sur le 1er "print".
my(), tel que déclaré ci-dessus, ne fonctionne qu'au niveau local du
bloc "for", ai-je lu, mais il me parait abérrant que la variable ne soit
pas passée dans les sous-blocs. Y aurait-il de réaliser ça ?
Question subsidiaire: "if (-M DIRHANDLER > 1)" semble fonctionner avec
perl 5.6, mais pas avec perl 5.0. Est-ce le cas ?
D'avance merci,
Emmanuel
Bonsoir,
Je pense que ta variable $dir ne contient pas un nom de fichier existant.
Ajoute :
next unless(-e $dir);
avant de faire ton test -M
J'ai un petit souci, probablement pas bien méchant bien que titillant. Voila mon bout de code :
for my $dir (@dirContent) { print "$dir "; print "$dir " if (-M $dir > 1); }
L'interpréteur me met un warning au niveau du "if" me stipulant que "$dir" n'est pas initialisée... ce qui me semble tout à fait faux puisque je n'ai pas de warning sur le 1er "print".
my(), tel que déclaré ci-dessus, ne fonctionne qu'au niveau local du bloc "for", ai-je lu, mais il me parait abérrant que la variable ne soit pas passée dans les sous-blocs. Y aurait-il de réaliser ça ?
Question subsidiaire: "if (-M DIRHANDLER > 1)" semble fonctionner avec perl 5.6, mais pas avec perl 5.0. Est-ce le cas ?
D'avance merci,
Emmanuel
Bonsoir,
Je pense que ta variable $dir ne contient pas un nom de fichier existant. Ajoute : next unless(-e $dir); avant de faire ton test -M
Olivier.
Patrick Mevzek
L'interpréteur me met un warning au niveau du "if" me stipulant que "$dir" n'est pas initialisée... ce qui me semble tout à fait faux puisque je n'ai pas de warning sur le 1er "print".
Le plus simple serait encore de donner le message d'erreur *exactement* tel qu'affiché, sans re-interprétation. En tout cas cela aiderait probablement à vous donner des pistes pertinentes.
-- Patrick Mevzek . . . . . . Dot and Co (Paris, France) <http://www.dotandco.net/> <http://www.dotandco.com/> Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
L'interpréteur me met un warning au niveau du "if" me stipulant que
"$dir" n'est pas initialisée... ce qui me semble tout à fait faux
puisque je n'ai pas de warning sur le 1er "print".
Le plus simple serait encore de donner le message d'erreur *exactement*
tel qu'affiché, sans re-interprétation.
En tout cas cela aiderait probablement à vous donner des pistes
pertinentes.
--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
L'interpréteur me met un warning au niveau du "if" me stipulant que "$dir" n'est pas initialisée... ce qui me semble tout à fait faux puisque je n'ai pas de warning sur le 1er "print".
Le plus simple serait encore de donner le message d'erreur *exactement* tel qu'affiché, sans re-interprétation. En tout cas cela aiderait probablement à vous donner des pistes pertinentes.
-- Patrick Mevzek . . . . . . Dot and Co (Paris, France) <http://www.dotandco.net/> <http://www.dotandco.com/> Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
Paul Gaborit
À (at) Tue, 08 Nov 2005 14:29:49 +0100, Emmanuel écrivait (wrote):
J'obtiens malheureusement le même message d'erreur : Use of uninitialized value at D:scriptsbackup.pl line 51. Il me semble toutefois que "foreach" n'est qu'un synonyme de "for".
'for' et 'foreach' sont effectivement *totalement* équivalent (en Perl).
Le message dit qu'*une* valeur non initialisée est utilisée. Il ne dit pas que cette valeur est celle de $dir ! Si c'était celle de $dir, l'erreur aurait été signalée aussi à la ligne précédente (qui utilise aussi $dir). Donc ce n'est pas la valeur de $dir. Quelle autre valeur alors ? Le résultat de '-M $dir'.
$dir n'est donc pas un chemin valide (ou vous n'avez pas le droit d'accéder à ces informations).
Peut-être avez-vous oublié de prefixer le nom $dir par le chemin d'accès global... Un truc du genre :
... print $dir if -M "$dirglob/$dir" > 1; ...
où $dirglob est le chemin d'accès au répertoire ayant servi à faire le tableau @dirContent.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Tue, 08 Nov 2005 14:29:49 +0100,
Emmanuel <mars@tacks.com> écrivait (wrote):
J'obtiens malheureusement le même message d'erreur : Use of
uninitialized value at D:scriptsbackup.pl line 51.
Il me semble toutefois que "foreach" n'est qu'un synonyme de "for".
'for' et 'foreach' sont effectivement *totalement* équivalent (en
Perl).
Le message dit qu'*une* valeur non initialisée est utilisée. Il ne dit
pas que cette valeur est celle de $dir ! Si c'était celle de $dir,
l'erreur aurait été signalée aussi à la ligne précédente (qui utilise
aussi $dir). Donc ce n'est pas la valeur de $dir. Quelle autre valeur
alors ? Le résultat de '-M $dir'.
$dir n'est donc pas un chemin valide (ou vous n'avez pas le droit
d'accéder à ces informations).
Peut-être avez-vous oublié de prefixer le nom $dir par le chemin
d'accès global... Un truc du genre :
...
print $dir if -M "$dirglob/$dir" > 1;
...
où $dirglob est le chemin d'accès au répertoire ayant servi à faire le
tableau @dirContent.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
J'obtiens malheureusement le même message d'erreur : Use of uninitialized value at D:scriptsbackup.pl line 51. Il me semble toutefois que "foreach" n'est qu'un synonyme de "for".
'for' et 'foreach' sont effectivement *totalement* équivalent (en Perl).
Le message dit qu'*une* valeur non initialisée est utilisée. Il ne dit pas que cette valeur est celle de $dir ! Si c'était celle de $dir, l'erreur aurait été signalée aussi à la ligne précédente (qui utilise aussi $dir). Donc ce n'est pas la valeur de $dir. Quelle autre valeur alors ? Le résultat de '-M $dir'.
$dir n'est donc pas un chemin valide (ou vous n'avez pas le droit d'accéder à ces informations).
Peut-être avez-vous oublié de prefixer le nom $dir par le chemin d'accès global... Un truc du genre :
... print $dir if -M "$dirglob/$dir" > 1; ...
où $dirglob est le chemin d'accès au répertoire ayant servi à faire le tableau @dirContent.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Emmanuel
'for' et 'foreach' sont effectivement *totalement* équivalent (en Perl).
Le message dit qu'*une* valeur non initialisée est utilisée. Il ne dit pas que cette valeur est celle de $dir ! Si c'était celle de $dir, l'erreur aurait été signalée aussi à la ligne précédente (qui utilise aussi $dir). Donc ce n'est pas la valeur de $dir. Quelle autre valeur alors ? Le résultat de '-M $dir'.
$dir n'est donc pas un chemin valide (ou vous n'avez pas le droit d'accéder à ces informations).
Peut-être avez-vous oublié de prefixer le nom $dir par le chemin d'accès global... Un truc du genre :
... print $dir if -M "$dirglob/$dir" > 1; ...
où $dirglob est le chemin d'accès au répertoire ayant servi à faire le tableau @dirContent.
Mais que je suis con... C'est exactement ça ! Avant de blamer le langage, j'aurais dû réflechir plus...
Merci à tous pour vos réponses en tout cas :)
Emmanuel
'for' et 'foreach' sont effectivement *totalement* équivalent (en
Perl).
Le message dit qu'*une* valeur non initialisée est utilisée. Il ne dit
pas que cette valeur est celle de $dir ! Si c'était celle de $dir,
l'erreur aurait été signalée aussi à la ligne précédente (qui utilise
aussi $dir). Donc ce n'est pas la valeur de $dir. Quelle autre valeur
alors ? Le résultat de '-M $dir'.
$dir n'est donc pas un chemin valide (ou vous n'avez pas le droit
d'accéder à ces informations).
Peut-être avez-vous oublié de prefixer le nom $dir par le chemin
d'accès global... Un truc du genre :
...
print $dir if -M "$dirglob/$dir" > 1;
...
où $dirglob est le chemin d'accès au répertoire ayant servi à faire le
tableau @dirContent.
Mais que je suis con... C'est exactement ça ! Avant de blamer le
langage, j'aurais dû réflechir plus...
'for' et 'foreach' sont effectivement *totalement* équivalent (en Perl).
Le message dit qu'*une* valeur non initialisée est utilisée. Il ne dit pas que cette valeur est celle de $dir ! Si c'était celle de $dir, l'erreur aurait été signalée aussi à la ligne précédente (qui utilise aussi $dir). Donc ce n'est pas la valeur de $dir. Quelle autre valeur alors ? Le résultat de '-M $dir'.
$dir n'est donc pas un chemin valide (ou vous n'avez pas le droit d'accéder à ces informations).
Peut-être avez-vous oublié de prefixer le nom $dir par le chemin d'accès global... Un truc du genre :
... print $dir if -M "$dirglob/$dir" > 1; ...
où $dirglob est le chemin d'accès au répertoire ayant servi à faire le tableau @dirContent.
Mais que je suis con... C'est exactement ça ! Avant de blamer le langage, j'aurais dû réflechir plus...
Merci à tous pour vos réponses en tout cas :)
Emmanuel
Paul Gaborit
À (at) Wed, 09 Nov 2005 09:35:16 +0100, Emmanuel écrivait (wrote):
Mais que je suis con...
Allons, allons... Ça arrive à tout le monde ;-)
C'est exactement ça ! Avant de blamer le langage, j'aurais dû réflechir plus...
C'est sûr : c'est une conséquence de ce qui précède ;-)
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Wed, 09 Nov 2005 09:35:16 +0100,
Emmanuel <mars@tacks.com> écrivait (wrote):
Mais que je suis con...
Allons, allons... Ça arrive à tout le monde ;-)
C'est exactement ça ! Avant de blamer le langage, j'aurais dû
réflechir plus...
C'est sûr : c'est une conséquence de ce qui précède ;-)
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>