gpt4 book ai didi

xml - 在 perl 的子程序中声明全局变量

转载 作者:行者123 更新时间:2023-12-05 08:24:18 24 4
gpt4 key购买 nike

我想知道是否可以在 Perl 的子例程中声明一个全局变量,这样我就可以在一个 Hook 的 void 函数中使用该变量,但通过在子例程中声明它来限制全局变量的破坏性影响。

所以子例程使用 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 本地,但对匿名子例程可见。

感谢您的宝贵时间,非常感谢您的帮助。

最佳答案

它应该已经按照您编写示例的方式工作了。你用“my $func = sub { ... } ”做的是创建一个闭包,它可以访问封闭范围的变量——在本例中是 @elements.

关于xml - 在 perl 的子程序中声明全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12142387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com