2012-10-09 29 views
20

为什么Perl的字符串乘法不会在undef上发出警告?

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

表达式

$foo . '' 

"$foo" 

都产生

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

但下面的表达产生了第e没有警告的空字符串:

$foo x 1 

任何人都知道为什么?我的意思是,有一个很好的字符串成语很酷($_ x 1defined ? "$_" : ''短得多),但它感觉有点奇怪。

+2

我确定这不是故意的,至少不是最初的。 – ikegami

+0

'perldoc perlop'(搜索“Multiplicative Operators”)并没有提及有关'un​​def'左操作数的'x'的行为。我同意这可能是无意的。 –

回答

9

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

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

+1

+1为电影/电视智慧。 – pilcrow

相关问题