Perl 如何将哈希作为可选参数传递给命令行中的-M

Perl 如何将哈希作为可选参数传递给命令行中的-M,perl,hash,package,command-line-interface,Perl,Hash,Package,Command Line Interface,我知道,当我们需要在包名之后向use关键字传递一些参数时,我们可以在-M参数之后的命令行中传递它们 例如: use feature 'say'; say 'hello!'; 可以使用从命令行调用 >perl -Mfeature=say -e"say 'hello!'" 但是如果这个论点是散列呢?我是否可以为以下示例制作一个内衬: use constant {c1 => 'foo', c2 => 'bar'}; use feature 'say'; say c1, c2; #

我知道,当我们需要在包名之后向
use
关键字传递一些参数时,我们可以在
-M
参数之后的命令行中传递它们

例如:

use feature 'say';
say 'hello!';
可以使用从命令行调用

>perl -Mfeature=say -e"say 'hello!'"
但是如果这个论点是散列呢?我是否可以为以下示例制作一个内衬:

use constant {c1 => 'foo', c2 => 'bar'};
use feature 'say';
say c1, c2; #expected: foobar
这不起作用:

>perl -Mfeature=say -Mconstant={c1,'foo',c2,'bar'} -e"say c1,c2"
Constant name '{c1' has invalid characters at -e line 0.
BEGIN failed--compilation aborted.
也不是说:

>perl -Mfeature=say -Mconstant="c1,'foo',c2,'bar'" -e"say c1,c2"
'foo'c2'bar'c2
我知道我可以在命令行中添加多个
-Mconstant=foo
,但这只是一个示例;我这里有一个可以在导入时使用哈希的包,我正试图从命令行调用它。

查看用法:


perl-我们使用常量{FOO=>1,BAR=>2};说FOO,“,BAR”
(请注意,
-E
启用所有功能,因此不需要
-Mfeature=say
)@ThisSuitesBlackNot:感谢您指向我不知道的
-E
开关。正如我所提到的,
feature
只是一个例子,实际上我正在尝试导入一个自定义模块,该模块在importwell中使用散列作为参数,只是在
-e
参数中添加
use
块非常简单,以至于我没有考虑它:o/Right。“
-Mmodule
在执行程序之前执行use module;。您可以使用引号在模块名称后添加额外代码,例如,
”-Mmodule qw(foo-bar)”
“谢谢:o)
perl -Mfeature=say "-Mconstant {c1 => 'foo', c2 => 'bar'}" -e"say c1,c2"