上下文评估有什么功能

Ali*_*MAR -1 perl

我知道,如果没有显式return,则返回最近评估的表达式,但我不清楚它在这段代码中是如何应用的.

use strict;
use warnings;

sub f1 {
    return "test 1\n";
}

sub f2 {
    f1();
}

sub f3 {
    f2();
}

my $r = f3();

print $r; # prints "test 1"
Run Code Online (Sandbox Code Playgroud)

在这种情况下,返回的值来自内部二级调用.我正在寻找一个参考来解释关于这一点的规则.如何确定上下文评估的功能?

Que*_*tin 6

评估并返回最后一个"表达式"

这就是它的全部.

$r被赋予评估结果f3().

sub f3没有return语句,因此它返回评估最后一个语句的结果,即f2().

sub f2没有return语句,因此它返回评估最后一个语句的结果,即f1().

f1 确实有一个显式的return语句,所以它返回该字符串.

  • 您阅读了源代码.或者使用调试器. (2认同)