Articles of perl

是否可以干运行安装一个CPAN包?

我正在从一台服务器迁移到另一台服务器,并使用perl -MCPAN -eautobundle来确定我应该携带哪些模块。 虽然有些模块在安装时有些问题(主要是由于依赖于非perl库等),所以能够看到它想要安装/更新的模块列表是一件好事,而不是完整安装捆绑包并查看testing输出的大板等

自编译的Perl包Centos

我有一个Centos 6服务器..我已经编译了Perl 5.16(在一个非标准的位置)。 现在,当我尝试安装一些依赖Perl使用yum的包。 百胜尝试再次安装Perl ..我如何告诉百胜使用安装的Perl .. FYI: # perl -v This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-multi-ld Copyright 1987-2012, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source […]

Postfix header_checks语法(POSIX – Perl)

我在Postfix中使用header_checks来重写我的头文件(对于由Outlook通过我的服务器发送的电子邮件)。 这是我想改变的头部的一部分: Received: from Raphasus (****.abo.wanadoo.fr [***.***.***.109]) by mail.********.com (Postfix) with ESMTPSA id 917***CE9 for <raph*****@hotmail.fr>; Thu, 31 Jul 2014 09:38:35 +0200 (CEST) 我想要做的是:只replaceFIRST LINE(带有一些个性化的信息),并追加最后2行。 我试过(在header_checks中): /^\s*(Received: from).*$(.*)/ REPLACE $1 my personalized text $2 它只有当我删除$ 2(所以它代替完整的收到:从我的文字),如果我把$ 2,它只是不会取代我的头。 我认为这部分是正确的: /^\s*(Received: from).*$ 它是select第一行或“Received:from”。 但是我怎样才能知道我的正则expression式后面的内容应该被认为是$ 2参数呢? 我到处search,找不到(查看POSIX语法,PERL语法(因为此文档说“使用传统的Perl语法,可以将匹配expression式中的子stringreplace为动作string”)) 我发现了一个有$ 1和$ 2参数的工作示例: /^\s*(Received: from)[^\n]*(.*)/ REPLACE $1 [127.0.0.1] (localhost [127.0.0.1])$2 但是我只是不知道什么是1美元,2美元是什么 […]

如何自定义警报消息文本

所以,我用munin来监视几百台服务器,我喜欢它。 我试图调整警报文本看起来有点不同,但我不理解如何得到它做我想要的。 我已经阅读http://guide.munin-monitoring.org/en/latest/tutorial/alert.html和http://munin-monitoring.org/wiki/MuninAlertVariables和variables等没有问题,我想改变语法。 更具体地说,这里是默认的文本格式化perl模块: '${var:group} :: ${var:host} :: ${var:graph_title}${if:cfields \n\tCRITICALs:${loop<,>:cfields ${var:label} is ${var:value} (outside range [${var:crange}])${if:extinfo : ${var:extinfo}}}.}${if:wfields \n\tWARNINGs:${loop<,>:wfields ${var:label} is ${var:value} (outside range [${var:wrange}])${if:extinfo : ${var:extinfo}}}.}${if:ufields \n\tUNKNOWNs:${loop<,>:ufields ${var:label} is ${var:value}${if:extinfo : ${var:extinfo}}}.}${if:fofields \n\tOKs:${loop<,>:fofields ${var:label} is ${var:value}${if:extinfo : ${var:extinfo}}}.}\n', 正如上面的文件所述,这将会输出如下的内容: dev :: hostname.dev ::内存使用情况OKs:swap是779112448.00。 我目前已经改写格式为: ${if:cfields CRITICAL} ${if:wfields WARNING} ${if:fofields OK} '${var:group} :: ${var:host} :: […]

为什么perl反引号没有看到任何东西超过第一空间?

我有一个命令 $output = `somecommand parm1 parm2`; 当我尝试运行这个Perl脚本,我得到。 Can't exec "somecommand" at ….. 看来它没有看到任何东西超出了“我有一个朋友在不同的环境中运行这个环境并且运行正常。 我可以在我的环境中有什么会导致这个? 我使用的Perl 5.20.0。

如何从perl脚本执行perl命令(正确转义)

我有一个Perl脚本,我需要在远程主机上执行一个简单的perl命令: ssh 192.168.1.1 "perl -pi.bup -e 's/^(\s+?kernel)(.*)(?<!audit=1)$/$1$2 audit=1/' /etc/grub.conf" 这只是简单地将“ audit=1 ”添加到/etc/grub.conf中每个内核行的末尾(如果它尚不存在)。 单线程在主机上直接运行时工作得很好,但不能通过另一个perl脚本中的ssh执行。 我试图用一个或多个反斜杠来逃避所有的美元符号,我也试图逃避“ \s ”中的反斜杠,但我似乎没有任何工作。 注意我不想将脚本复制到远程主机,然后执行它 – 我想直接使用ssh命令来执行它。 如何正确地逃避这一点,使其工作? – 2015年9月9日更新,以显示我在做的Perl脚本: sub SomeMethod { &RunCommand($host, "perl -pi.bup -e \'s/^(\s+?kernel)(.*)(?<!audit=1)\$/\$1\$2 audit=1/\' /etc/grub.conf"); } sub RunCommand { my ($server, $command) = @_; my $commandOutput = ""; if ($server ne "") { $command = "ssh $server \"$command\""; […]

需要为本地安装设置哪些PERL环境variables?

我正在运行的Centos 7.2,默认情况下有Perl 5.16。 我的一个用户请求的软件至less需要Perl 5.18,首选5.22。 我在/opt/perl/5.24安装了5.24,使用: ./Configure -des -Dprefix=/opt/perl/5.24 -Dotherlibdirs=/opt/perl/5.24/lib/perl5 -Uuseperlio 我们使用环境模块,我只希望这一个软件能够使用这个Perl版本 – 否则会用行话来说 – “不支持”。 现在需要设置哪些环境variables来使用该软件? 很明显,我会将/opt/perl/5.24/bin追加到$PATH ,但是perl需要/需要什么其他variables – 用于安装模块等? (使用cpanimus) 我可以看到有一个$PERL5LIB和一个$PERL_PATH在各种职位 – 但是这些规范的Perl或只是有关的post有问题?

HTML页面被“切断”CGI / Perl

我注意到网页在运行Apache 2.2的服务器上pipe理的基于Perl / CGI的专有应用程序“切断”的问题。 这导致我通过自己编写一个Perl脚本进一步调查问题,我能够重新创build相同的问题。 没有特别的地方输出被切断。 我已经考虑了超时的可能性,但是我找不到在web服务器日志中出现任何相关的错误。 为CGI设置的限制似乎也很好。 我可以采取哪些措施来确定原因(并解决)这个问题?

在MySQL DB上使用正则expression式(perl?)

我有一个MYSQL数据库,我需要对其中一个字段进行一些文本处理。 这是一次性的,而不是一个持续的过程。 内置的MySQL文本操作function将是我做我所需要做的噩梦。 Perl几行就可以做到,甚至有一个perl脚本需要使用精确的文本操作命令。 将表转储到一个文本文件,Perling它,然后恢复它会工作,但有点麻烦; 有没有更容易或更好的方法来使用Perl来操纵mysql数据库中的数据循环通过表中的每一行,编辑字段中的数据,并移动到下一行?

如何解决这些错误,并在Ubuntu / Debian下安装Perl的ClamAV?

成功后 apt-get install clamav 然后我做了: perl -MCPAN -e shell 安装File :: Scan :: ClamAV 得到了 CPAN.pm:打造J / JA / JAMTUR / File-Scan-ClamAV-1.91.tar.gz 在/ root / bin(或其他一些地方)找不到clamd – 你确定clamav在安装? 警告:命令没有成功[/ usr / bin / perl Makefile.PL INSTALLDIRS = site] JAMTUR /文件扫描,ClamAV的-1.91.tar.gz / usr / bin / perl Makefile.PL INSTALLDIRS = site – 不行 运行make test 制造一些问题,不会testing […]