Pourquoi la fonction ne fonctionne pas défini?
Question
J'ai un morceau de code qui ne fonctionne pas comme je l'attends au travail. PRINCIPALEMENT la fonction définie ne fonctionne pas.
@jobs = qw[job1 undef job2];
if(defined($jobs[1])) {
print "Job 1 is defined";
}
Je reçois la sortie
Job 1 is defined
clairement $jobs[1]
est undef
. Qu'est-ce que je manque?
La solution
Puisque vous utilisez qw
, votre code est équivalent à:
@jobs = ("job1", "undef", "job2");
$jobs[1]
est la chaîne "undef"
qui n'est pas identique à undef
et donc le comportement.
Si vous voulez que le deuxième emploi pour être un undef
que vous pouvez faire:
@jobs = ("job1", undef, "job2");
AFAIK vous ne pouvez pas obtenir ce fait en utilisant qw
.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow