在Perl中,直接全局别名和通过存储的别名之间有什么区别吗?

Eri*_*rom 8 perl alias typeglob perl-stash

在Perl中,以下两个结构之间是否存在任何差异:

*main::foo = *main::bar
Run Code Online (Sandbox Code Playgroud)

$main::{foo} = $main::{bar}
Run Code Online (Sandbox Code Playgroud)

它们似乎具有相同的功能(将所有槽中的别名别名*main::foo定义在中*main::bar),但我只是想知道这种等效性是否总是成立.

yst*_*sth 9

也许不是你想要的那种差异,但是*main::foo和之间有两个很大的区别$main::{foo}; 前者在编译时查找存储区中的glob,必要时创建它,而后者在运行时查找存储区中的glob,并且不会创建它.

这可能会对存储中的任何其他东西产生影响,它肯定会影响您是否收到used only once警告.