perl - 从 CLI 的模块调用 Perl 函数

标签 perl command-line

我想要一些可以在脚本中调用的函数,但它可以在命令行中发挥作用。所以我创建了一个小模块,但出现错误。

一个简单的演示示例:
在当前目录中,我有文件 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)

我在这里做错了什么?

最佳答案

首先,更改 Foo.pm 以避免 Foo.pm did not return a true value 错误。在文件末尾添加 1;:

use strict;
use warnings;
package Foo;

sub get_string {
    return "foo+bar";                                                                                                                                                                
}

1;

接下来,-MFoo::get_string 语法可能需要一个名为 Foo::get_string 的模块,但您的模块只是简单地命名为 Foo .

以下内容对我有用:

$ perl -I. -MFoo -E 'say Foo::get_string'
foo+bar

引用perlrun对于-M

如果您需要将参数传递给子:

$ perl -I. -MFoo -E 'say Foo::get_string(5)'

关于perl - 从 CLI 的模块调用 Perl 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76908933/

相关文章:

linux - 我应该如何找到几个可能字符的索引?

regex - perl 相当于我的正则表达式来处理多行搜索

linux - 如何在 perl 中将 ulimit 设置为无限制?

json - jq 条件输出

bash - 使用文本文件中的列表重命名目录中的文件

javascript - CoffeeScript 错误

perl - 如何获取子数组?

perl - LWP::UserAgent 坚持验证主机名

mysql 命令行从 1 个源生成 2 个文件

java - LibGDX 可以创建为命令行应用程序吗?