gpt4 book ai didi

perl - perl 包是自动生成的吗?它们究竟是如何工作的?

转载 作者:行者123 更新时间:2023-12-02 06:31:37 26 4
gpt4 key购买 nike

我想弄清楚是否可以动态创建一个 Perl 包,所以我写了一个简单的测试程序。

eval "package foobar;";

$foobar::baz = 4;
print $foobar::baz;

程序打印4。然后我试了一下

use strict;
use warnings FATAL => 'all';

eval "package foobar;";

$foobar::baz = 4;
print $foobar::baz;

程序没有崩溃也没有被拒绝(并且仍然打印 4),尽管 foobar 包直到运行时才知道存在.

然后我试了一下

use strict;
use warnings FATAL => 'all';

$foobar::baz = 4;
print $foobar::baz;

并且 Perl 仍然愉快地打印 4

我现在彻底糊涂了。我一直认为包必须明确创建,而不是突然出现。它们究竟是如何工作的?当一个包被“使用”而不是通过 package 被“声明”时,是否有 pragma 可以发出警告?

最佳答案

从某种意义上说,包只不过是恰好是符号表的散列中的键。在示例代码中设置 $foobar::baz 后,您可以通过检查散列 %foobar:: 来查看这一点。之后,您可以开始查看 %::。通过直接弄乱符号表,可以做一些有趣的(以及难以理解和调试的)事情。

要阅读所有这些的文档页面是 perlmod

关于perl - perl 包是自动生成的吗?它们究竟是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34505847/

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