在以下代码中:
use strict;
use warnings;
use Data::Dumper;
my %hash = %Whatever::whatever;
my @array = @Whatever::whatever;
print Dumper \@array;
print Dumper \%hash;
Run Code Online (Sandbox Code Playgroud)
我的理解是@Whatever ::无论是什么访问符号表,并且不会产生错误消息,因为符号表是一个哈希.但为什么至少没有用于访问不存在元素的警告消息?
hob*_*bbs 12
因为在Perl中以不存在的状态捕获全局变量几乎是不可能的.一旦你提到一个名字 - 甚至只是为了引用它 - 它就存在了.因为数组和散列与标量不同; 标量存在时保持该值undef,当用于大多数目的时,触发"使用未初始化的值"警告; 但是数组和散列作为空数组和散列而存在,并且空数组或散列不足以警告!
(根据评论改编/迁移)
我想说的是,它标识了包中@Whatever::whatever命名的动态范围数组,而不是“访问符号表……[有点]哈希”。@whateverWhatever
像这样的限定标识符总是避免限制(请参阅 的文档strict 'vars')。
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |