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

标签 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; #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,但这只是一个示例;我这里有一个包,可以在导入时获取哈希值,并且我正在尝试从命令行调用它。

最佳答案

查看 perlrun使用:

perl -Mfeature=say "-Mconstant {c1 => 'foo', c2 => 'bar'}" -e"say c1,c2"

关于perl - 如何在命令行中将哈希作为可选参数传递给 -M,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30848516/

相关文章:

r - 如何在 R 包命名空间文件中正确使用 useDynLib()

perl - 通过 perl 脚本调用 make 实用程序/文件

java - static 和 Final 对包意味着什么?

macos - 无法在 OS X (El Capitan) 上安装 perl 模块 Glib

hash - 是否可以将 NetMTLMv2 哈希转换为 NTLM 哈希?

perl - 将散列存储在散列中

ruby-on-rails - 在自身内部散列的事件记录

java - java中如何导入包?

regex - 在 Perl 中的条件之后计算正则表达式中的字符串

perl - CPAN 认为过时的模块是最新的