我现在写Perl很长一段时间了,总是发现新的东西,我只是碰到了一些有趣的东西,我没有解释它,也没有在网上找到它.
sub a {
sub b {
print "In B\n";
}
}
b();
Run Code Online (Sandbox Code Playgroud)
为什么我可以b()从外部调用它并且它有效?
我知道这是一个不好的做法,我不这样做,我使用闭合等这些情况,但只是看到了.
我有以下 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 中查找