Perl 编程中的返回值与文件句柄使用技巧
1. 隐式返回值问题
在 Perl 编程中,当一个子程序没有遇到显式的 return 语句而“执行到末尾”时,它会返回子程序中最后一个表达式的值。这可能会导致完全意想不到的返回值。
例如,下面的子程序 find_second_odd 本应返回参数列表中的第二个奇数,如果列表中没有第二个奇数则返回 undef :
sub find_second_odd {
my $prev_odd_found = 0;
# Check through args...
for my $num (@_) {
# Find an odd number...
if (odd($num)) {
# Return it if it's not the first (must be the second)...
return $num if $prev_odd_found;
# Otherwise, remember it's been seen...
$prev_odd_found = 1;
}
}
# Otherwise, fail
}
当使用这个子程序时,会出现奇怪的情况:
if (defined find_second_
超级会员免费看
订阅专栏 解锁全文
10

被折叠的 条评论
为什么被折叠?



