如何将子例程变量值传递到另一个子例程变量,我可以使用全局变量.
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())可能不是一个好主意,除非你真的知道他们在做什么,这可能不是这种情况(关于原型的讨论见The problem with prototypes)