假设我的全局变量和局部变量具有相同的名称,如何在子例程中访问全局变量值?
#! /usr/bin/perl
$name = "Krishna";
sub printName{
my $name = "Sankalp";
print ("Local name : ", $name, "\n");
# How to print global variable here
}
&printName;
print("Global name : ", $name, "\n");
如果您的全局变量实际上是一个程序包变量,则可以通过程序包名称空间访问它。预设套件为main
。
print "Local name : $main::name\n";
由于您停留在相同的名称空间中main
,因此可以省略,因此$::name
也可以使用。如果您的外部变量也是使用定义的,则这两种解决方案均无效my
。
您可以使用our
或通过定义包变量use names qw($name)
。
就是说,您绝对不应该那样做。始终使用词法变量,并将它们放在尽可能小的范围内。use strict
并use warnings
会帮助你,并且有这抱怨一个Perl ::评论家的规则,如果你定义具有相同名称的变量在一个较小的范围内现有的一个。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句