在操作符中§
请参阅主要文档 在上下文中 了解前缀 temp
sub prefix:<temp>(Mu is rw)
“临时化”作为参数传递的变量。该变量以与在外层作用域中相同的初始值开始,但可以在此作用域中分配新值。退出作用域后,该变量将恢复为其原始值。
my = "three";say ; # OUTPUT: «three»say ; # OUTPUT: «three»
您还可以在调用 temp 时立即分配
temp = "five";
请注意,一旦离开块,temp
效果就会被移除。如果您在撤消 temp
后从 Promise
中访问该值,您将获得原始值,而不是 temp
值
my = "original";say "Left the block; value is now `$v`";sleep 2;# OUTPUT:# [PROMISE] Value before block is left: `new one`# About to leave the block; value is `new one`# Left the block; value is now `original`# [PROMISE] Block was left while we slept; value is now `original`
在变量中§
请参阅主要文档 在上下文中 了解temp 前缀
与 my
一样,temp
在其作用域的末尾恢复变量的旧值。但是,temp
不会创建新变量。
my = 0; # temp will "entangle" the global variable with the call stack# that keeps the calls at the bottom in order.sub f(*);sub g(*);print g(g(f(g()), g(), f()));# OUTPUT: «<g># <g># <f># <g># </g># </f># <g># </g># <f># </f># </g># </g>»