我是File :: Slurp模块的新手,在我第一次使用它时,它没有给出我期望的结果.我花了一段时间才弄明白,所以现在我对我为何看到这种行为感兴趣.
我对File :: Slurp的调用如下所示:
my @array = read_file( $file ) || die "Cannot read $file\n";
Run Code Online (Sandbox Code Playgroud)
我包含了"die"部分,因为我习惯在打开文件时这样做.我的@array总是会在数组的第一个元素中得到文件的全部内容.最后我拿出了"|| die"部分,它按照我的预期开始工作.
这是一个例子来说明:
perl -de0
Loading DB routines from perl5db.pl version 1.22
Editor support available.
Enter h or `h h' for help, or `man perldebug' for more help.
main::(-e:1): 0
DB<1> use File::Slurp
DB<2> $file = '/usr/java6_64/copyright'
DB<3> x @array1 = read_file( $file )
0 'Licensed material - Property of IBM.'
1 'IBM(R) SDK, Java(TM) Technology Edition, Version 6'
2 'IBM(R) Runtime Environment, …Run Code Online (Sandbox Code Playgroud) 我有一个单独的服务器与postgres和Nagios一起运行.我想使用带有nagios的" psql_replication_check.pl "来监视postgres复制状态.此检查脚本需要DBD :: Pg模块才能连接到数据库.安装DBD :: Pg请求pg_config文件的路径.
#perl Makefile.PL
Configuring DBD::Pg 2.17.1
Path to pg_config?
Run Code Online (Sandbox Code Playgroud)
我没有权限在Nagios机器上安装postgres.有没有人以前解决过这个问题.
我在两个系统上都有CentOS 5.4.
我正在使用Module :: Load动态加载模块.但是我无法调用模块中定义的方法.这就是我在做的事情
my $module = load("Module");
$module->function();
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
没有包或对象引用,无法调用方法"function"
上面的代码有什么问题?
我自己制作了一个自定义PERL模块,当它被同一目录中的脚本调用时,它可以工作,但出于某种明显的原因,它不能从目录外部调用.如何在不安装模块的情况下使用该模块?例如:
use 5.012;
use warnings;
use Y:/my/dir/to/module.pm;
Run Code Online (Sandbox Code Playgroud) 在为Perl安装DateTime时,我收到以下错误,但它失败了;
# Failed test 'Make sure we can add 50 years worth of years in America/New_York time zone'
# at t/30future-tz.t line 45.
Use of uninitialized value in numeric ge (>=) at /home/bensley/.cpan/build/DateTime-0.72/blib/lib/DateTime.pm line 138.
# Failed test 'Make sure we can add 50 years worth of days in America/Chicago time zone'
# at t/30future-tz.t line 45.
Use of uninitialized value in numeric ge (>=) at /home/bensley/.cpan/build/DateTime-0.72/blib/lib/DateTime.pm line 138.
# Failed test 'Make sure we can add 50 years worth …Run Code Online (Sandbox Code Playgroud) 当我尝试安装Net :: SSH :: Expect perl模块时,我收到以下错误.
perl Makefile.PL
Warning: prerequisite Expect 1.14 not found.
Writing Makefile for Net::SSH::Expect
Writing MYMETA.yml
Run Code Online (Sandbox Code Playgroud)
我期待安装在我的ubuntu机器上.
expect version 5.45
Run Code Online (Sandbox Code Playgroud)
但是在尝试安装它时仍然会向我发出此警告.请指教.
每次我被迫从CPAN检索模块时,我都非常失望.在我工作的大多数环境中,互联网访问受到严格限制或完全被拒绝.在操作系统强化过程中已删除所有编译器.在进入或退出网站之前,安全团队会扫描所有数字存储媒体.请注意,我理解安全性,所有这些对我来说都没关系,但......
仅访问CPAN模块提供的代码的建议或最佳做法是什么.
如果我只需要一个模块给我的片段,功能或单一功能串,如何在不安装整个模块的情况下提取"我需要/想要的东西"?请记住,我可能会打印出来,写下来并输入内容,以便通过互联网访问从异地位置传输数据.
我有许多与功能无关的Bash和Perl脚本,但它们的相关之处在于它们在同一个项目中工作.它们在同一个项目中工作的事实意味着我通常指定相同的目录,相同的项目特定命令,每个脚本顶部的相同关键字.
目前,这并没有让我感到困惑,但据我所知,将所有这些值集中在一个地方会更容易,如果有什么变化,我可以更改一次值并让各种脚本接受这些变化.
问题是 - 如何最好地宣布这些价值观?每个脚本中"必需"的单个Perl脚本对Perl脚本的更改要求较少,但不提供Bash脚本的解决方案.使用"key = value"格式的配置文件可能更通用,但要求每个脚本解析配置并有可能引入问题.还有更好的选择吗?使用环境变量?或者Perl可以轻松执行和解释的Bash特定方式?
虽然有很好的描述如何设置ROUGE评估,但我无法完全完成安装的任何地方.
我有以下格式的密钥哈希:
scaffold_902_159
scaffold_2_1980420
scaffold_2_10
scaffold_10_402
Run Code Online (Sandbox Code Playgroud)
我想打印出以下列格式排序的哈希:
scaffold_2_10
scaffold_2_1980420
scaffold_10_402
scaffold_902_159
Run Code Online (Sandbox Code Playgroud)
所以首先我必须以数字方式订购第一个号码,然后参加最后一个号码.我不希望正则表达式搜索"scaffold_",因为这可能会有所不同.我的意思是,我可以使用其他格式的哈希,例如" blablabla_NUMBER_NUMBER,或blablablaNUMBER_NUMBER ".键_NUMBER的最后一部分是唯一永久的部分.
我有这个代码,但只能按数字排序第一个数字:
my @keys = sort {
my ($aa) = $a =~ /(\d+)/;
my ($bb) = $b =~ /(\d+)/;
$aa <=> $bb;
} keys %hash;
foreach my $key (@keys) {
print $key;
}
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
perl ×10
perl-module ×10
bash ×1
cpan ×1
file-io ×1
install ×1
installation ×1
linux ×1
nagios ×1
perl-context ×1
sorting ×1
ubuntu ×1
variables ×1