Perl - Utilisation de la valeur non initialisée?
Donc j'essaye de faire exécuter ce code...
my $filePath = $ARGV['0'];
if ($filePath eq ""){
print "Missing argument!";
}
Il convient de cocher le premier argument de ligne de commande, et me dire si c'est vide, mais elle renvoie cette erreur et je n'arrive pas à comprendre pourquoi:
Use of uninitialized value $filePath in string eq at program.pl line 19.
Ce que je fais mal?
source d'informationauteur A Clockwork Orange | 2011-03-20
Vous devez vous connecter pour publier un commentaire.
Juste vérifier si $ARGV[0] est défini
Cette affiche "Pas de Chemin d'accès Spécifié!\n" si il n'y avait aucun passé en ligne de commande.
Le problème que vous rencontrez, est en cours de réglage $filePath à une valeur non définie. Mises en garde est de se plaindre car vous avez ensuite essayé de comparer une valeur non définie "". Avertissements pense que c'est la peine de vous raconter.
J'ai utilisé mon exemple pour montrer un moyen propre de vérifier si quelque chose est définie, mais, techniquement, pour ce faire, vous pourriez tout aussi bien faire:
Vide et non initialisées sont pas la même chose. Vous pouvez vérifier si une variable est initialisée avec la
defined
opérateur, comme par exemple:Je suis sûr que vous avez voulu dire ceci:
(sans les guillemets)
Alternative la réponse est de définir une valeur par défaut si elle n'est pas définie:
EDIT: @Andrew l'a souligné, ce n'est pas de même, comme il échouera avec le nom de fichier "0"
Aussi, au lieu de
@Mat a écrit. vous pouvez utiliser plus simple
qui fait exactement la même