在perl中不需要在开头定义哈希?

1 perl perl-data-structures

是否不需要在代码的开头定义perl哈希变量.

例如,我在一个脚本变量"反式",这不是定义的发现my %trans%trans在代码的任何地方.但以下代码似乎正在起作用.

$trans{$lang_code} = set_elements($files_to_process{$lang_code},@tags_to_extract);
Run Code Online (Sandbox Code Playgroud)

$test = $trans{lc $Preferred_Language}->{'t_14'};
Run Code Online (Sandbox Code Playgroud)

Perl在检查语法后继续将"trans"解释为哈希变量吗?这是怎么回事

woo*_*tar 5

如果没有use strict,则在使用全局变量时会自动创建它们.方便一行脚本,但通常不赞成.此外,还会自动创建哈希中的键.您会看到更少的人抱怨代码,如果它们尚不存在,则会在每个哈希值中$trans{'key1'}{'subkey'}{'detailkey'}{'deepkey'} ++创建key1,subkey,detailkeydeepkey.

  • 是的,有一个功能可用`没有autovivification;`但我从来没有看到任何人推荐它. (2认同)