加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

全局变量,子程序变量Perl中的问题

发布时间:2020-12-15 23:30:43 所属栏目:大数据 来源:网络整理
导读:如何将子例程变量值传递到另一个子例程变量,我可以使用全局变量. sub foo(){my $myvar = "Hello";} sub foo1(){my $myvar1 = $myvar; # how can I get the "Hello" from $myvar.} 我试图使用包和全局变量,但失败了. Package Bar;our $bar; 谢谢. 解决方法 您
如何将子例程变量值传递到另一个子例程变量,我可以使用全局变量.

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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读