Вопрос

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

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

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

Job 1 is defined

четко $jobs[1] является undef. Анкет Что мне не хватает?

Это было полезно?

Решение

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top