perl下一般有三种定义一个变量的方法:
1. $var = "XXX"
2. local($var) = "XXX"
3. my($var) = "XXX"
第一种方式是定义一个全局的变量,第二种方式定义一个local类型的变量,第三种方式定义一个my类型的变量。
目前我知道的这三种定义变量的方式在作用域上有区别,下面这个例子可以说明这一点。
----------------------------------------------------------------------------------------------------------
$var = "global"; # 生命全局变量$var
&print_var( ); # 输出结果是:global
&print_local( ); # 输出结果是:local
# print_local中声明的变量的作用于延续到被它调用的子例程中
&print_my( ); # 输出结果是:global
# print_my中声明的变量仅在print_my中有效
sub print_var { print "$office/n"; }
&print_var( ); # 输出结果是:global
&print_local( ); # 输出结果是:local
# print_local中声明的变量的作用于延续到被它调用的子例程中
&print_my( ); # 输出结果是:global
# print_my中声明的变量仅在print_my中有效
sub print_var { print "$office/n"; }
sub print_local { local($var) = "local"; &print_var( ); }
sub print_my { my($var) = "my"; &print_var( ); }
sub print_my { my($var) = "my"; &print_var( ); }
-----------------------------------------------------------------------------------------------------------
2007/11/21