2011-01-20 3 views
2

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

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

я получить выход

Job 1 is defined 

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

ответ

10

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

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

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

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

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

AFAIK вы не можете получить это сделано с помощью qw.

+0

Thank you codaddict. – user582452

+4

@ user582452 - это демпфер данных (например, Data: Dumper - http://search.cpan.org/dist/Data-Dumper/) - ваш друг. 'print Dumper (\ @ jobs)' показал бы, что было в вашем массиве – plusplus

Смежные вопросы