문제

I have a piece of code which does not work as I expect it to work. MAinly the defined function does not work.

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

I get the output

Job 1 is defined

clearly $jobs[1] is undef. What am I missing?

도움이 되었습니까?

해결책

Since you are using qw, your code is equivalent to:

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

So $jobs[1] is the string "undef" which is not same as undef and hence the behavior.

If you want the second job to be an undef you can do:

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

AFAIK you cannot get this done using qw.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top