Perl 中通过 local() 实现临时值
在 Perl 中,local 主要用于当变量的当前值必须对已调用的子例程可见时。Perl local 只向全局(含义是包)变量提供临时值。这被称为动态作用域。词法作用域由 my 完成,其功能更类似于 C 的 auto 声明
如果为 local 提供了多个变量或表达式,则必须将其放在括号中。此运算符通过将那些变量的当前值保存在其隐藏堆栈中的参数列表中,并在退出块、子例程或 eval 时恢复它们而起作用。
示例
我们查看以下示例以区分全局变量和局部变量 −
#!/usr/bin/perl # Global variable $string = "Hello, World!"; sub PrintHello { # Private variable for PrintHello function local $string; $string = "Hello, Perl!"; PrintMe(); print "Inside the function PrintHello $string\n"; } sub PrintMe { print "Inside the function PrintMe $string\n"; } # Function call PrintHello(); print "Outside the function $string\n";
输出
当执行以上程序时,会生成以下结果 −
Inside the function PrintMe Hello, Perl! Inside the function PrintHello Hello, Perl! Outside the function Hello, World!
广告