这可能不是一个好主意。在调用者上下文周围有很多微妙的陷阱等待发生。
但是 - return 实际上不是 sub 所需要的 - 如果没有 return 则 sub 隐式返回最后一次计算的结果。
#!/usr/bin/env perl
use strict;
use warnings;
sub parent {
my @results = ( "one", "two" );
child ( @results, "some_other_value" );
}
sub child {
return ( @_ );
}
print parent();
因为child返回它的参数——因为parent的最后一行是调用child——那么parent隐式返回child的结果。
但我建议你不要这样做,因为我称之为糟糕的风格 - 未来的维护程序员不一定知道你在做什么。
您可以通过以下方式稍微改进:
return child ( @results, "some_other_value" );
但请记住,返回上下文可能会有些奇怪 - 例如:
#!/usr/bin/env perl
use strict;
use warnings;
sub parent {
my @results = ( "one", "two" );
return child( @results, "some_other_value" );
}
sub child {
return (@_);
}
my $result = parent();
print $result;
对比
sub parent2 {
my @results = ( "one", "two" );
return ( @results, "some_other_value" );
}
my $result = parent2();
print $result;
看起来非常相似,但由于操作的上下文,结果不同。