20

在下面

use strict;
use warnings;
my $foo = undef;

表达式

$foo . ''

"$foo"

两者都生产

Use of uninitialized value $foo in ... at ...

但下面的表达式给出了空字符串而没有警告:

$foo x 1

Anyone knows why? I mean, it's cool to have a nice stringification idiom ($_ x 1 is quite much shorter than defined ? "$_" : ''), but it feels a bit weird.

4

1 回答 1

9

我曾经在法学院的课堂上看过一个有场景的节目。讲师向他的学生展示了两个类似的案例,并询问他们为什么会导致不同的裁决。这是因为裁决是由法官做出的,而法官是人,他最终解释说。

那应该警告。从事 Perl 工作的开发人员是人。如果您愿意,请运行perlbug以发送错误报告。

于 2012-10-09T18:00:46.740 回答