推荐答案
在 Perl 中,子例程可以通过 return 语句返回值。如果没有显式使用 return,子例程将返回最后一个表达式的值。
sub add {
my ($a, $b) = @_;
return $a + $b;
}
my $result = add(3, 4); # $result 现在是 7本题详细解读
1. 使用 return 语句
在 Perl 中,return 语句用于从子例程中显式返回一个值。return 语句可以返回任何类型的值,包括标量、数组、哈希等。
sub multiply {
my ($a, $b) = @_;
return $a * $b;
}
my $product = multiply(5, 6); # $product 现在是 302. 隐式返回值
如果子例程中没有使用 return 语句,Perl 会默认返回子例程中最后一个表达式的值。
sub subtract {
my ($a, $b) = @_;
$a - $b; # 这里没有使用 return,但会返回 $a - $b 的结果
}
my $difference = subtract(10, 4); # $difference 现在是 63. 返回多个值
Perl 子例程可以返回多个值,这些值会被收集到一个列表中。
sub divide_and_modulo {
my ($a, $b) = @_;
return ($a / $b, $a % $b);
}
my ($quotient, $remainder) = divide_and_modulo(10, 3); # $quotient 是 3.333..., $remainder 是 14. 返回引用
如果需要返回复杂的数据结构(如数组或哈希),可以返回它们的引用。
// www.javascriptcn.com code example
sub get_user_info {
my %info = (
name => 'Alice',
age => 30,
);
return \%info; # 返回哈希的引用
}
my $user_info = get_user_info();
print $user_info->{name}; # 输出 "Alice"5. 注意事项
- 如果子例程中没有
return语句,且最后一个表达式没有返回值(例如print),子例程将返回undef。 - 使用
return语句可以提前结束子例程的执行,并返回指定的值。
sub check_value {
my $value = shift;
return "Invalid" if $value < 0;
return "Valid";
}
my $status = check_value(-5); # $status 现在是 "Invalid"