Warum definierte Funktion nicht?
Frage
ich ein Stück Code haben, der nicht funktioniert, wie ich es Arbeit erwarten. Vor allem der definierte Funktion funktioniert nicht.
@jobs = qw[job1 undef job2];
if(defined($jobs[1])) {
print "Job 1 is defined";
}
Ich erhalte die Ausgabe
Job 1 is defined
deutlich $jobs[1]
ist undef
. Was bin ich?
Lösung
Da Sie qw
verwenden, Ihr Code entspricht:
@jobs = ("job1", "undef", "job2");
So $jobs[1]
ist die string "undef"
, die nicht gleich wie undef
ist und somit das Verhalten.
Wenn Sie die zweite Job wollen ein undef
sein, das Sie tun können:
@jobs = ("job1", undef, "job2");
AFAIK Sie können nicht dies getan mit qw
erhalten.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow