为什么定义的功能不起作用?

use*_*452 2 arrays string perl undef

我有一段代码,它不起作用,因为我希望它工作.主要是定义的功能不起作用.

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

我得到了输出

Job 1 is defined
Run Code Online (Sandbox Code Playgroud)

显然$jobs[1]undef.我错过了什么?

cod*_*ict 10

由于您使用qw,您的代码相当于:

@jobs = ("job1", "undef", "job2");
Run Code Online (Sandbox Code Playgroud)

所以$jobs[1]字符串 "undef"这是不一样的undef,因此行为.

如果你想要第二份工作,undef你可以做:

@jobs = ("job1", undef, "job2");
Run Code Online (Sandbox Code Playgroud)

AFAIK你无法完成这项工作qw.

  • @ user582452 - 数据转储器(例如Data :: Dumper - http://search.cpan.org/dist/Data-Dumper/)是你的朋友.`print Dumper(\ @ jobs)`会显示你阵列中的内容 (4认同)