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

Job 1 is defined

chiaramente $jobs[1] è undef. Che cosa mi manca?

È stato utile?

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
scroll top