- 论坛徽章:
- 0
|
写了一个程序和子程序,部分如下:
主程中引用如下:
&MRTG_Config($max_rate,$link_desc,$ip_address,$if_index,$community,'traffic');
&MRTG_Config($max_rate,$link_desc,$ip_address,$if_index,$community,'uncast');
&MRTG_Config($max_rate,$link_desc,$ip_address,$if_index,$community,'multicast');
&MRTG_Config($max_rate,$link_desc,$ip_address,$if_index,$community,'broadcast');
子程序如下:
sub MRTG_Config {
my ($max_rate,$link_desc,$ip_address,$if_index,$community,$type)=@_;
my $traffic='bit';
my $uncast=$multicast=$broadcast='packets';
print "type is $type,traffic is $traffic,result is ${$type}\n";
}
结果如下:
type is traffic,traffic is bit,result is
type is uncast,traffic is bit,result is
type is multicast,traffic is bit,result is packets
type is broadcast,traffic is bit,result is packets
问题:
为什么第一、二行结果不能正常打印$traffic和$uncast??? 我把子程序中的$traffic及$uncast等的定义改成全局变量(去掉前面的my)结果就正常了,我的感觉是子程序在打印时,对于$traffic及$uncast均调用的全局变量,而$multicast及$broadcast则正常调用了我定义的局部变量(我在主程中从未重复使用过这些变量名)。
请高手帮忙解答一下,谢谢。 |
|