相关疑难解决方法(0)

嵌套子例程和Perl中的作用域

我现在写Perl很长一段时间了,总是发现新的东西,我只是碰到了一些有趣的东西,我没有解释它,也没有在网上找到它.

sub a {
   sub b {
     print "In B\n";
   }
}
b();
Run Code Online (Sandbox Code Playgroud)

为什么我可以b()从外部调用它并且它有效?

我知道这是一个不好的做法,我不这样做,我使用闭合等这些情况,但只是看到了.

perl scope nested subroutine

17
推荐指数
3
解决办法
4673
查看次数

获取变量“@xml_files”不会在...行保持共享

我有以下 Perl 代码:

sub merge_xml {

  foreach my $repository ('repo1', 'repo2') {
    my @xml_files;

    sub match_xml {
      my $filename = $File::Find::dir . '/' . $_;
      if ($filename =~ m%/(main|test)\.xml$%) {
        push(@xml_files, $filename);
      }
    }

    find(\&match_xml, $repository);

    print Dumper(\@xml_files);
  }
}
Run Code Online (Sandbox Code Playgroud)

我收到警告:

Variable "@xml_files" will not stay shared at ./script/src/repair.pl line 87.
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

PS 在File::Find 中查找

perl

3
推荐指数
1
解决办法
68
查看次数

标签 统计

perl ×2

nested ×1

scope ×1

subroutine ×1