问题标签 [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.
perl - 我应该如何处理 Perl 模块内部或外部的错误?
我开始学习如何使用perltoot在 perl 中制作模块:
- 我想知道,如果可能的话,我应该如何使用示例代码来威胁模块内外的任何错误?
例如:
或者
- 如果我在模块中调用任何其他有错误、问题、缺少参数的东西,那么正确的方法是如何判断有错误?
PS:希望我的问题不会太离谱,大家好:)
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 lib
in的方法BEGIN
?
有什么建议可以最大限度地提高位置的灵活性、将所有东西放在一起、最大限度地减少安装位置的多个硬编码?
perl - 如何为 Perl 变量设置默认值?
我对 Perl 完全陌生。我需要使用外部模块 HTTP::BrowserDetect。我正在测试一些代码并试图从 os_string 方法中获取操作系统的名称。所以,我只是简单地初始化了对象并创建了一个变量来存储返回的值。
有些用户代理不是浏览器用户代理,因此它们不会从 os_string 获得任何值。我收到一个错误Use of uninitialized value $os_name in concatenation (.) or string
当 $os_name 未初始化时,我该如何处理这种情况,因为方法 os_string 返回 undef(这是我认为阅读模块源代码时会发生的情况)。我想应该有一种方法可以提供默认字符串,例如在这些情况下没有操作系统。
perl - 为什么 Perl 的 Net::SFTP->new 抱怨“不是数组引用”?
我正在尝试使用 Net::SFTP 连接到远程服务器。
我的脚本是:
但是当我运行它时,我收到一条错误消息:
谁能帮我这个?
linux - 如果未安装 postgres,如何安装 DBD::Pg?
我有一个单独的服务器运行 postgres 和 Nagios。我想在 nagios 中使用“ psql_replication_check.pl ”来监控 postgres 复制状态。此检查脚本需要 DBD::Pg 模块才能连接到数据库。安装 DBD::Pg 时询问 pg_config 文件的路径。
我没有权限在 Nagios 机器上安装 postgres。有没有人以前解决过这个问题。
我在两个系统上都有 CentOS 5.4。
perl - 我什么时候应该使用`use`?
只要我记得,每当我使用模块时,我都会 use
在代码的开头包含一行。
最近我正在编写两个相互使用的 Moose 对象模块。看看这个过于简单的例子:
一个模块:
另一个模块:包M2 0.001;
还有一个使用它们的简短示例:
现在,请注意这两个模块相互使用。M1
创建 的实例M2
并使用它来生成very_cool_name
,同时M2
将 的实例M1
作为属性。
现在,如果我use M2;
在M1
日食中取消注释会发疯。我想这是因为这是由这种“循环使用”创建的循环。
我对此发表了评论use
,一切似乎都很好(我认为......),但让我非常焦虑(我正在使用一个没有use
- 类的对象!那是“合法的”吗?......)。这也让我想知道:
我什么时候真的需要使用
use
?我认为我被教导要始终使用它,当然当我使用一个对象时也是如此。当两个模块相互使用时,有什么根本上的错误吗(从某种意义上说,每个模块都使用另一个模块的对象;我知道在某些情况下这在逻辑上是不可能的,但有时——比如在这种情况下——我认为这确实是有道理的)。
perl - 如何摆脱'名称......只使用一次:可能的错字......'?
我收到警告:
好吧,我知道我可以取消这个特定的警告,但它有点难看。我做错什么了吗?我不习惯被警告:)
perl - 如何在 Perl 中将数字转换为英文形式?
我需要一个将数字作为输入示例 222 的 Perl 脚本,它应该输出为222。
perl - 在 OOP Perl 中调用子例程
在查看我接管的一些代码时,我遇到了这一行:
我知道这会从名为My::Module::DB::raw_info
.
我不确定(我只是在学习 OOP)是->search_like
指什么。
我没有将其视为变量或子程序My::Module::DB::raw_info
任何提示将不胜感激。我才刚刚开始学习这些东西。这就像沐浴在火中。(我知道我以后会更快乐)哎呀!
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 存在于我的本地副本中。
我正在尝试做的事情可能吗?
如果是这样,我哪里错了?