如何将子程序变量值转移到另一个子程序变量中,我可以使用全局变量吗?
sub foo(){
my $myvar = "Hello";
}
sub foo1(){
my $myvar1 = $myvar; # how can I get the "Hello" from $myvar.
}
我尝试使用包和全局变量,但失败了。
Package Bar;
our $bar;
谢谢。
您可以在包含 2 个函数的作用域中声明变量:
{ my $myvar
sub foo{
$myvar = "Hello";
}
sub foo1{
my $myvar1 = $myvar;
}
}
但这并不是很优雅,并且可能很难维护,因为它在foo1
其中的值$myvar
已设置。将变量作为参数传递可能更好。
sub foo {
my $myvar = "Hello";
return $myvar;
}
sub foo1 {
my( $myvar)= @_;
my $myvar1 = $myvar;
}
# calling code
my $myvar= foo();
foo1( $myvar);
请注意,所有 3$myvar
是不同的变量,在不同的范围内。
作为旁注,使用原型(sub foo()
)可能不是一个好主意,除非你真的知道他们在做什么,但情况可能并非如此(请参阅原型的问题 http://www.modernperlbooks.com/mt/2009/08/the-problem-with-prototypes.html有关原型的讨论)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)