提问人:snoopyjc 提问时间:12/17/2022 最后编辑:wovanosnoopyjc 更新时间:1/2/2023 访问量:79
了解 Perl 包中的完全限定名称
Understanding fully qualified names in Perl packages
问:
我正在尝试理解 CGI.pm 中的一些代码,特别是:
package CGI::MultipartBuffer;
....
$MultipartBuffer::INITIAL_FILLUNIT ||= 1024 * 4;
...
$INITIAL_FILLUNIT = $MultipartBuffer::INITIAL_FILLUNIT;
我需要知道的是完全限定的名称,在我的解释中,它们都应该是,但我必须弄错了,否则为什么需要第二个分配语句?$MultipartBuffer::INITIAL_FILLUNIT
$INITIAL_FILLUNIT
$CGI::MultipartBuffer::INITIAL_FULLUNIT
答:
2赞
ikegami
12/17/2022
#1
$INITIAL_FILLUNIT
未声明,因此它是一个包变量。[1] 由于当前的包是 ,它指的是 。CGI::MultipartBuffer
$CGI::MultipartBuffer::INITIAL_FILLUNIT
这意味着
$INITIAL_FILLUNIT = $MultipartBuffer::INITIAL_FILLUNIT;
方法
$CGI::MultipartBuffer::INITIAL_FILLUNIT = $MultipartBuffer::INITIAL_FILLUNIT;
- 这将被 禁止。
use strict;
评论
0赞
snoopyjc
12/17/2022
谢谢 - $MultipartBuffer::INITIAL_FILLUNIT是什么意思?
0赞
snoopyjc
12/18/2022
我在符号表上使用 perl -d 和 Dumper,看起来 $MultipartBuffer::INITIAL_FILLUNIT 实际上意味着 $main::MultipartBuffer::INITIAL_FILLUNIT。我假设它的意思是 $CGI::MultipartBuffer::INITIAL_FILLUNIT
0赞
ikegami
12/18/2022
回复“$MultipartBuffer::INITIAL_FILLUNIT是什么意思”,这是一个变量。你是什么意思?
0赞
ikegami
12/18/2022
回复“看起来 $MultipartBuffer::INITIAL_FILLUNIT 实际上意味着 $main::MultipartBuffer::INITIAL_FILLUNIT”,从技术上讲,是的。但只是因为它也是 $main::main::MultipartBuffer::INITIAL_FILLUNIT、$main::main::main::MultipartBuffer::INITIAL_FILLUNIT、$main::main::main::main::MultipartBuffer::INITIAL_FILLUNIT 等。但真的没有。它的意思是 $MultipartBuffer::INITIAL_FILLUNIT
2赞
ikegami
12/18/2022
同样,不是 main 的子包。它不是 ,不是$MultipartBuffer::INITIAL_FILLUNIT
$main::MultipartBuffer::INITIAL_FILLUNIT
评论