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

在perl中不需要在开始时定义哈希?,perl,perl-data-structures,Perl,Perl Data Structures,不需要在代码开头定义perl哈希变量 例如,我在一个脚本中发现了一个变量“trans”,该变量未定义为my%trans或%trans。但下面的代码似乎起了作用 $trans{$lang_code} = set_elements($files_to_process{$lang_code},@tags_to_extract); 及 Perl是否在检查语法后将“trans”解释为散列变量并继续?。如果没有使用严格的,全局变量将在使用时自动创建。对于单行脚本来说很方便,但通常不受欢迎。此外,哈希中的键

不需要在代码开头定义perl哈希变量

例如,我在一个脚本中发现了一个变量“trans”,该变量未定义为
my%trans
%trans
。但下面的代码似乎起了作用

$trans{$lang_code} = set_elements($files_to_process{$lang_code},@tags_to_extract);


Perl是否在检查语法后将“trans”解释为散列变量并继续?。如果没有使用严格的

,全局变量将在使用时自动创建。对于单行脚本来说很方便,但通常不受欢迎。此外,哈希中的键也会自动创建。你会看到更少的人抱怨像
$trans{'key1'}{'subkey'}{'deepkey'}++
这样的代码,这些代码在这些哈希中创建key1subkeydeepkeydeepkey,如果它们还不存在的话。

没有
使用strict
,全局变量在使用时自动创建。对于单行脚本来说很方便,但通常不受欢迎。此外,哈希中的键也会自动创建。你会看到更少的人抱怨像
$trans{'key1'}{'subkey'}{'deepkey'}++
这样的代码,这些代码在这些哈希中创建key1subkeydeepkeydeepkey,如果它们还不存在的话;使用警告。除此之外,它将明确禁止您意外使用全局变量。另一个问题是,请记住$trans和%trans可以共存,但是$trans{'key'}将在%trans中查找。
$trans
@trans
%trans
都可以共存。即使有时在同一条线上,你也要搔搔头才能把它们区分开来。比如:
@trans=split/,/,$trans@trans{@trans}=unde
这可能会让人非常困惑@ikegami和Tom McClure。。明白了。谢谢。始终使用
严格使用;使用警告。除此之外,它将明确禁止您意外使用全局变量。另一个问题是,请记住$trans和%trans可以共存,但是$trans{'key'}将在%trans中查找。
$trans
@trans
%trans
都可以共存。即使有时在同一条线上,你也要搔搔头才能把它们区分开来。比如:
@trans=split/,/,$trans@trans{@trans}=unde
这可能会让人非常困惑@ikegami和Tom McClure。。明白了。谢谢。这项语言功能被称为自动识别-是的,有一项功能可用
无自动识别但我从来没见过有人推荐它。@woolstar:我见过
没有自动激活由几个人推荐,但我自己从未实际使用过。(有些人认为自体受精是一个问题或错误特征。我不是其中之一。)这种语言特征被称为自动激活——是的,有一个特征可供使用。“代码>但我从来没见过有人推荐它。@woolstar:我见过
没有自动激活由几个人推荐,但我自己从未实际使用过。(有些人认为自体受精是一个问题或错误。我不是他们中的一个。)
$test = $trans{lc $Preferred_Language}->{'t_14'};