last
命令类似于 C 语言中的 break
语句(用于循环);它立即退出当前循环。如果省略 LABEL,则该命令引用最内层的循环。last EXPR
形式(从 Perl 5.18.0 开始可用)允许在运行时计算标签名称,在其他方面与 last LABEL
相同。continue
块(如果有)不会执行。
LINE: while (<STDIN>) {
last LINE if /^$/; # exit when done with header
#...
}
last
无法从通常返回值的块中返回值,例如 eval {}
、sub {}
或 do {}
。它将执行其流程控制行为,这将排除任何返回值。它不应用于退出 grep
或 map
操作。
请注意,块本身在语义上等同于执行一次的循环。因此,last
可用于实现从此类块的提前退出。
另请参阅 continue
,以了解 last
、next
和 redo
的工作原理。
与大多数命名运算符不同,此运算符具有与赋值相同的优先级。它也不受“看起来像函数”规则的约束,因此 last ("foo")."bar"
将导致“bar”成为 last
的参数的一部分。