Perché non definito funzione non funziona?
Domanda
Ho un pezzo di codice che non funziona come mi aspetto che al lavoro. Principalmente la funzione definita non funziona.
@jobs = qw[job1 undef job2];
if(defined($jobs[1])) {
print "Job 1 is defined";
}
ho l'uscita ??p>
Job 1 is defined
chiaramente $jobs[1]
è undef
. Che cosa mi manca?
Soluzione
Dal momento che si sta utilizzando qw
, il codice è equivalente a:
@jobs = ("job1", "undef", "job2");
Quindi $jobs[1]
rappresenta l' stringa "undef"
che non è uguale undef
e quindi il comportamento.
Se si desidera che il secondo lavoro per essere un undef
si può fare:
@jobs = ("job1", undef, "job2");
Per quanto ne so non è possibile ottenere questo fatto utilizzando qw
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow