Почему определенная функция не работает?

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

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

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

Job 1 is defined

явно $jobs[1] является undef, Что мне не хватает?

1 ответ

Решение

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

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

Так $jobs[1] это строка "undef" который не такой как undef и, следовательно, поведение.

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

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

AFAIK, вы не можете сделать это с помощью qw,

Другие вопросы по тегам