虽然local操作符的历史比my操作符久远,但Perl后来还是新增了my来分担local的工作,在大部分情况下应首选my,但也有一些特殊情况下必须使用local。 my操作符用于创建词法作用域变量,通过my创建的变量,存活于声明开始的地方,直到闭合作用域的结尾。 闭合作用域指的可以是一对花括号中的区域,可以是一个文件,也可以是一个...
(1)外部设置my、local、缺省均队内有效,但是同名变量外部my,在block内部local是不允许的。因为二者在block中调用的子程序中均有效,会冲突。 (2)如果在一个block中有一个my修饰的变量和外界的一个变量同名,而且又需要在这个block中使用外界变量时,两个办法: 第一个办法,用main的package修饰这个变量名,$main::glo...
虽然local操作符的历史比my操作符久远,但Perl后来还是新增了my来分担local的工作,在大部分情况下应首选my,但也有一些特殊情况下必须使用local。 my操作符用于创建词法作用域变量,通过my创建的变量,存活于声明开始的地方,直到闭合作用域的结尾。 闭合作用域指的可以是一对花括号中的区域,可以是一个文件,也可以是一个...
在Perl中, 有三种修饰符是修饰变量的作用域的:our, my, local,它们与前面提到的Perl中的作用域息息相关. our声明的变量是包全局的, 也就是说, our声明的变量会出现在这个包的符号表中;my声明的变量仅作用于一个块(block), 在Perl中, 一对{}包起来的部分称之为一个块, 比如一个函数是一个块, 一个循...
跟用my 时不一样了吧? 此时在greeting1调用greeting2时,greeting2可以看到greeting1的局部变量$hello,外部的全局变量当然就隐藏了。 Perl中的变量作用范围 local, my, our与全局变量 [ZZ from:http://shake863./blog/189799] 很古老很古老以前...嗯,不用老到白垩纪,那时候的Perl是自由射击的。没有什么定义...
(1)外部设置my、local、缺省均对内有效,但是同名变量外部my,在block内部local是不允许的。因为二者在block中调用的子程序中均有效,会冲突。 (2)如果在一个block中有一个my修饰的变量和外界的一个变量同名,而且又需要在这个block中使用外界变量时,两个办法: ...
local($value)="temporary"; tellme(); } sub tellme{ print"Current value is $value\n"; } 用my时$value只存在于spoof中,tellme是另一个块,其中的$value中不同的变量。用local变量可在调用的子程序中出现,可以打印出值 。 local 在本块内改变全局变量的值如$/。出了块就恢复。内部变量不能用my声明...
上面每种修饰词都给它们修饰的变量做出某种不同类型的“限制”。简单说:our 把名字限于一个范围,local 把值限于一个范围以及 my 把名字和值都限于一个范围。 这些构造都是可以赋值的,当然它们对值的实际处理是不同的,因为它们有不同的存储值的机制。如果你不给它们赋任何值(象我们上面那样),它们也有一些区别...
perl也有作用域的概念,perl定义的变量默认是全局的,当在定义变量时使用 my $abc,那么$abc的作用域就限定在当前函数体或当前for循环中。乃局部变量。 答(二): our,"把名字限于某个范围“,其实就是明确声明一个"全局变量",虽然是在某个模块或者函数里面定义的,外面的也可以访问,如果已经声明过了,再次用"our"...
对于sub A,对于local变量,可以被A所调用的其他模块直接引用。对于my变量,则只能在sub A中使用,不能被A所调用的其他模块直接引用。这是别人的精辟理解~