如何将子程序变量值转移到另一个子程序变量中,我可以使用全局变量吗?
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
是不同的变量,在不同的范围内。附带说明一下,使用原型(prototype)(
sub foo()
)可能不是一个好主意,除非你真的知道他们在做什么,但情况可能并非如此(见 The problem with prototypes 对原型(prototype)的讨论)
关于perl - Perl中的全局变量、子程序变量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2972310/