Почему определенная функция не работает? - PullRequest
2 голосов
/ 20 января 2011

У меня есть кусок кода, который не работает, как я ожидаю, что он будет работать.В общем, определенная функция не работает.

@jobs = qw[job1 undef job2];
if(defined($jobs[1])) {
  print "Job 1 is defined";
}

Я получаю вывод

Job 1 is defined

ясно $jobs[1] равно undef.Чего мне не хватает?

1 Ответ

10 голосов
/ 20 января 2011

Поскольку вы используете qw, ваш код эквивалентен:

@jobs = ("job1", "undef", "job2");

Итак, $jobs[1] - это строка "undef", которая отличается от undef и, следовательно, поведения.

Если вы хотите, чтобы вторая работа была undef, вы можете сделать:

@jobs = ("job1", undef, "job2");

AFAIK, вы не можете сделать это, используя qw.

...