Je ne cherche pas forcément un meilleur moyen de le faire, plutôt des explications sur la sortie seraient grandement appréciées. Récemment, un programmeur senior m'a demandé pourquoi son code fonctionnait mais seulement pour une instance. Ce que je suis venu à découvrir, c'est que cela a fonctionné tous les autres événements. Voici mon exemple:Pourquoi le glob de Perl revient-il undef pour tous les autres appels?
#!/usr/bin/perl -w
use strict;
my @list_env_vars = (
'$SERVER',
'$SERVER',
'$SERVER',
'$SERVER',
'$SERVER',
'$SERVER',
);
foreach (@list_env_vars){
print "$_ = ".glob()."\n";
}
dont la sortie pour perl 5.004:
$SERVER = UNIX_SERVER
$SERVER =
$SERVER = UNIX_SERVER
$SERVER =
$SERVER = UNIX_SERVER
$SERVER =
ou de sortie pour perl 5.10:
$SITE = $SITE
Use of uninitialized value in concatenation (.) or string at glob_test.pl line 14.
$SITE =
$SITE = $SITE
Use of uninitialized value in concatenation (.) or string at glob_test.pl line 14.
$SITE =
$SITE = $SITE
Use of uninitialized value in concatenation (.) or string at glob_test.pl line 14.
$SITE =
J'ai personnellement jamais utilisé glob() de cette façon si J'étais mal équipé pour lui répondre. J'ai lu la documentation perldoc glob et j'ai suivi le lien File::Glob sur cette page et je n'ai toujours pas trouvé de quoi expliquer la sortie. Toute aide serait très appréciée.
Utilisera probablement perl 5.004 en raison des restrictions sur les machines auxquelles il sera distribué. – Akers