我想知道是否可以在Perl的子例程中聲明一個全局變量,以便我可以在掛鉤的void函數中使用該變量,但通過限制全局的破壞性影響它在一個子程序中聲明。在perl中的子例程中聲明全局變量
所以子程序使用XML::Parser
收集一堆元素的ID,以類似的方式:
sub getRecipeIDs {
my $recipe = shift;
my @elements =();
my $parser = new XML::Parser(Style => 'Tree',
Handlers => {
Start => sub {
my ($expat, $element, %attrs) = @_;
if ($element eq 'recipe') {
push @elements, $attrs{id};
}
}});
$parser->parse($recipe);
return @elements;
}
我也是在我的腳本中使用strict
。
所以我想宣佈@elements
這樣一種方式,它在getRecipeIDs
本地,但匿名子例程可見。
感謝您的時間,任何幫助,非常感謝。
請參閱'perldoc -f local' – shawnhcorey