user582452
user582452

Reputation: 23

Why does defined function not work?

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?

Upvotes: 2

Views: 130

Answers (1)

codaddict
codaddict

Reputation: 455460

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.

Upvotes: 10

Related Questions