问题标签 [perl-module]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
245 浏览

perl - 我应该如何处理 Perl 模块内部或外部的错误?

我开始学习如何使用perltoot在 perl 中制作模块:

  • 我想知道,如果可能的话,我应该如何使用示例代码来威胁模块内外的任何错误?

例如:

或者

  • 如果我在模块中调用任何其他有错误、问题、缺少参数的东西,那么正确的方法是如何判断有错误?

PS:希望我的问题不会太离谱,大家好:)

0 投票
1 回答
135 浏览

perl - Perl 应用程序安装

我编写了一个小型 perl 应用程序,用于部署在几台服务器上。它由一些脚本、一些模块和一些数据文件组成。它将被多个用户使用。我想将所有这些文件放在一个目录中,而不是将应用程序模块移动到 site_perl 目录。

例如,假设应用程序由 jump.pl Swim.pl Common.pm 和 messages.txt 组成

应用程序(jump.pl 或swim.pl)将从另一个目录调用。应用程序的安装位置可能不在 $PATH 上,因此用户(或其他应用程序)可能会通过绝对路径名(例如)/some/path/swim.pl或相对路径名(例如../path/swim.pl

我希望尽可能简单地重新定位应用程序,这意味着在尽可能少的地方拥有应用程序的路径。

目前swim.pl和jump.pl是这样开始的

所以我/some/path在几个脚本和模块中有几个位置。

我考虑了以下可能的方法来减少不同地方的存储数量/some/path

  • 设置环境变量PERL5LIB=/some/path并执行 open my $fh, '<', "$ENV{PERL5LIB}/messages.txt"
  • 将 shebang 行设置为#!/usr/bin/perl -I/some/path- 但是如何找到messages.txt?
  • 尝试use Cwd qw(abs_path); 找到一种basename abs_path($0)用于use libin的方法BEGIN

有什么建议可以最大限度地提高位置的灵活性、将所有东西放在一起、最大限度地减少安装位置的多个硬编码?

0 投票
3 回答
14882 浏览

perl - 如何为 Perl 变量设置默认值?

我对 Perl 完全陌生。我需要使用外部模块 HTTP::BrowserDetect。我正在测试一些代码并试图从 os_string 方法中获取操作系统的名称。所以,我只是简单地初始化了对象并创建了一个变量来存储返回的值。

有些用户代理不是浏览器用户代理,因此它们不会从 os_string 获得任何值。我收到一个错误Use of uninitialized value $os_name in concatenation (.) or string

当 $os_name 未初始化时,我该如何处理这种情况,因为方法 os_string 返回 undef(这是我认为阅读模块源代码时会发生的情况)。我想应该有一种方法可以提供默认字符串,例如在这些情况下没有操作系统。

0 投票
1 回答
1363 浏览

perl - 为什么 Perl 的 Net::SFTP->new 抱怨“不是数组引用”?

我正在尝试使用 Net::SFTP 连接到远程服务器。

我的脚本是:

但是当我运行它时,我收到一条错误消息:

谁能帮我这个?

0 投票
1 回答
4869 浏览

linux - 如果未安装 postgres,如何安装 DBD::Pg?

我有一个单独的服务器运行 postgres 和 Nagios。我想在 nagios 中使用“ psql_replication_check.pl ”来监控 postgres 复制状态。此检查脚本需要 DBD::Pg 模块才能连接到数据库。安装 DBD::Pg 时询问 pg_config 文件的路径。

我没有权限在 Nagios 机器上安装 postgres。有没有人以前解决过这个问题。

我在两个系统上都有 CentOS 5.4。

0 投票
2 回答
208 浏览

perl - 我什么时候应该使用`use`?

只要我记得,每当我使用模块时,我都会 use在代码的开头包含一行。

最近我正在编写两个相互使用的 Moose 对象模块。看看这个过于简单的例子:

一个模块:

另一个模块:包M2 0.001;

还有一个使用它们的简短示例:

现在,请注意这两个模块相互使用。M1创建 的实例M2并使用它来生成very_cool_name,同时M2将 的实例M1作为属性。

现在,如果我use M2;M1日食中取消注释会发疯。我想这是因为这是由这种“循环使用”创建的循环。

我对此发表了评论use,一切似乎都很好(我认为......),但让我非常焦虑(我正在使用一个没有use- 类的对象!那是“合法的”吗?......)。这也让我想知道:

  • 我什么时候真的需要使用use?我认为我被教导要始终使用它,当然当我使用一个对象时也是如此。

  • 当两个模块相互使用时,有什么根本上的错误吗(从某种意义上说,每个模块都使用另一个模块的对象;我知道在某些情况下这在逻辑上是不可能的,但有时——比如在这种情况下——我认为这确实是有道理的)。

0 投票
2 回答
8695 浏览

perl - 如何摆脱'名称......只使用一次:可能的错字......'?

我收到警告:

好吧,我知道我可以取消这个特定的警告,但它有点难看。我做错什么了吗?我不习惯被警告:)

0 投票
3 回答
2394 浏览

perl - 如何在 Perl 中将数字转换为英文形式?

我需要一个将数字作为输入示例 222 的 Perl 脚本,它应该输出为222

0 投票
6 回答
446 浏览

perl - 在 OOP Perl 中调用子例程

在查看我接管的一些代码时,我遇到了这一行:

我知道这会从名为My::Module::DB::raw_info.

我不确定(我只是在学习 OOP)是->search_like指什么。

我没有将其视为变量或子程序My::Module::DB::raw_info

任何提示将不胜感激。我才刚刚开始学习这些东西。这就像沐浴在火中。(我知道我以后会更快乐)哎呀!

0 投票
1 回答
1171 浏览

perl - 编译一个可移植的 Perl 并包含一个 CPAN 模块

我正在尝试编译包含 CPAN 模块的可移植版本的 perl,特别是 YAML 模块。我打算能够将这个可移植版本复制到我在许多 Redhat Linux 机器上的主目录中,将它添加到我的 $PATH 并使用这个版本而不是默认的 perl 版本来运行一些测试。

我已经设法编译了一个可移植版本的 perl 并让它在不同的机器上工作。但是,当我编译并安装 YAML 模块时,它可以在本地工作,但是当我将其复制到其他机器时会失败。

这是我在本地为 YAML 模块编译的步骤

它在本地安装 YAML 模块,并且当我在脚本中使用 YAML 模块时也可以在本地工作。

一旦我将 perl 复制到另一台机器并尝试使用 YAML 模块,这就是错误...

即使 lib/site_perl/5.10.1/x86_64-linux/YAML/LibYAML.pm 存在于我的本地副本中。

我正在尝试做的事情可能吗?
如果是这样,我哪里错了?