为什么以下use行是合法的 Perl 语法?(改编自 POD for parent;在 Cygwin 上的 Perl 5.26.2 x64 上测试。)
package MyHash;
use strict;
use Tie::Hash;
use parent -norequire, "Tie::StdHash";
# ^^^^^^^^^^ A bareword with nothing to protect it!
在 下-MO=Deparse,use线变为
use parent ('-norequire', 'Tie::StdHash');
但我无法从use文档 中看出引用的-norequire来源。
如果
use strict没有生效,我会理解的。裸词norequire会变成字符串"norequire",一元减号会变成字符串"-bareword",而结果字符串会进入use导入列表。例如:package MyHash; use Tie::Hash; use parent -norequire, "Tie::StdHash";同样,如果有一个粗逗号,我会理解的。
-foo => bar变为"-foo", bar因为=>变为foo,"foo"然后一元减号再次发挥其魔力。例如:package MyHash; use strict; use Tie::Hash; use parent -norequire => "Tie::StdHash";
这两个示例都为该use行产生了相同的 deparse。但是,两者都引用了原始示例没有引用。我遗漏了什么使原始示例(带strict,不带=>)合法?谢谢!