我想有一些函数,我可以在脚本中调用,但它可以从命令行有用。所以我创建了一个小模块,但我得到一个错误。
下面是一个简单的示例:
在当前目录中,我在文件Foo.pm
中
use strict;
use warnings;
package Foo;
sub get_string {
return "foo+bar";
}
然后在命令行中执行以下操作:
$ perl -I. -MFoo::get_string
我得到:
Can't locate Foo/get_string.pm in @INC (you may need to install the
Foo::get_string module)
我做错了什么?
2条答案
按热度按时间eyh26e7m1#
首先,更改
Foo.pm
以避免Foo.pm did not return a true value
错误。在文件末尾添加1;
:接下来,
-MFoo::get_string
语法可能需要一个名为Foo::get_string
的模块,但您的模块只是名为Foo
。以下是我的工作:
请参考
-M
的perlrun。如果你需要传递一个参数给sub:
cygmwpex2#
如果将此添加到Foo包中
然后你可以使用命名的sub:
从
perldoc perlrun
约-M
一点内置的语法糖意味着你也可以说**-mMO =foo,bar或-MMO =foo,bar作为 *'-MMOqw(foo bar'的快捷方式。这避免了在导入符号时使用引号的需要。由-MMO =foo,bar生成的实际代码是
use module split(/,/,q{foo,bar})
。