||为短路操作符,返回为真的值:
#以下这种用法比较多,如果shift $_之后为真,$money=shift;否则$money=100.这可以用于缺省赋值。
一般是没啥问题的,但如果对于sub定义的函数来说,可能会有问题.执行以下代码:
sub fee{
my $money=shift ||100;
print "$money\n";
}
fee(10); #10
fee(); #100
fee(0); #100
|
注意fee(0)这个输出结果可能不是我们想要的(本意是要输出0,比如不想对其收费,但结果是收了缺省的100,够狠的....)
解决方法有二:
(1).常规改进代码:
my $money = shift;
$money = 100 if not defined $money;
|
(2).用//代替||(这个特性在Perl 5.10 中引入):
阅读(1006) | 评论(0) | 转发(0) |