Articles of perl

使用AWK从两个文件中分解n个列

我有两个N列数的文件 文件1: A 1 2 3 ……. Na1 B 2 3 4 ……. Nb1 文件2: A 2 2 4 ……. Na2 B 1 3 4 ……. Nb2 我想要一个输出从File1的第一列值将被从File2的第一列中减去,这样直到列N如下所示: A -1 0 -1 …….. (Na1-Na2) B 1 0 0 …….. (Nb1-Nb2) 如何在Linux环境中执行AWK或Perl脚本?

Perl脚本可用作程序和模块

我有一个Perl脚本(独立程序),其中包含我想在其他脚本中重用的一些子。 由于执行环境的限制,我不能将这些函数移动到一个普通的.pm文件中。 是否可以区分脚本是作为独立程序运行还是由另一个脚本编辑/ do ? 我唯一能find的就是在顶层使用caller :独立程序没有任何调用者,而当require caller显示谁加载模块。 有没有更好的解决scheme?

如何在一行中接触文件和mkdir

我需要用一个绝对文件名来访问一个文件,例如:/opt/test/test.txt,但我不确定系统上是否存在/ opt / test。 所以代码应该与此类似: if (-d '/opt/test') { touch '/opt/test/test.txt'; } else { mkdir -p '/opt/test'; touch '/opt/test/test.txt' } 有没有更好的方法来简化代码? 我希望有一些系统命令可以只用一行完成相同的工作。

我怎样才能用Perl杀死整个进程树呢?

什么是从Perl脚本中杀死一个进程及其所有subprocess的最好方法? 它应该至less在Linux和Solaris下运行,不需要安装任何额外的软件包。 我的猜测是通过parsing/ proc中的文件或parsingps的输出(在Linux和Solaris之间似乎都不可移植)来获取所有进程及其父母的列表。 然后杀死树中的所有进程(这似乎容易出现竞争状况)。 我可以忍受这种特殊情况下的竞争条件,但是我怎样才能得到进程列表呢?

简洁的方式来打印所有的行,直到匹配给定模式的最后一行

我试图find一个简洁的shell,它会给我一个文件中的所有行, 直到某种模式。 用例将转储日志文件中的所有行,直到find指示服务器已重新启动的标记。 这是一个愚蠢的壳只有这样的方式: tail_file_to_pattern() { pattern=$1 file=$2 tail -n$((1 + $(wc -l $file | cut -d' ' -f1) – $(grep -E -n "$pattern" $file | tail -n 1 | cut -d ':' -f1))) $file } 一个稍微更可靠的Perl方式,需要stdin上的文件: perl -we ' push @lines => $_ while <STDIN>; my $pattern = $ARGV[0]; END { my $last_match = […]

在Perl中串行处理XML数据

我想知道哪个XMLparsing器的人事情将是我的情况下最好的Perl。 我做了很多的阅读,并尝试过XML::LibXML和XML::SAX 。 第一个用完了太多的内存,第二个对我来说看起来并不那么快(甚至在closures纯粹的perlparsing器之后)。 我的需求相当具体。 通过Net::SSH库,我收到了最多50MB的大量响应。 我希望将这些数据传递给XML库,以便将最小数量的数据保存在内存中。 然后,我需要在某些标签中查找数据,并对其进行任何操作,在某些情况下,可以对一些值进行求和,而在其他情况下只需提取值并将其写入文件或其他任何内容。 所以我需要一个可以串行工作的XMLparsing器,快速工作并使用最less的内存。 我得到的数据最多为1024个字节,所以我希望能够像$myparser->sendData($mynewData)那样做一些事情,然后在打开或closures一个新标签时调用类似于XML::SAX函数XML::SAX确实。 我不一定需要XPath或XSLT。

即使没有真正的用户,我如何在Asterisk的Linux服务中设置环境variables?

我创build了一个作为deamon运行的linux服务(并从/etc/init.d/X开始)。 我需要设置一些可以被应用程序访问的环境variables。 这是场景。 该应用程序是一堆依赖于(因此需要以asterisk用户运行)的Perl AGI脚本,但星号没有shell。 理想情况下,我只是将其设置在/home/asterisk/.bashrc中,但不存在星号。 如何在星号用户的运行环境中为我的应用程序设置环境variables,以便我的应用程序可以使用它们?

使用SFTP将图像从HTML表单传输到使用PERL / CGI.pm的远程Linux服务器

这是一个学校项目,导师不知道如何编写代码。 我正在使用CGI ,我试图传输一个文件而不使用Net::FTP或Net::SFTP因为我试图将其传输到的服务器将不允许来自这些服务的连接。 我已经写了HTML表单,并且能够获取通过CGI上传的文件的名称。 是否有可能在驻留在Linux服务器上的Perl脚本中使用SFTP命令使用bash传输通过HTML表单上传的文件? 如果有人知道这样做的方式,请张贴代码,以便我可以修改它,并插入到我的脚本。

parsing文件perl

这个程序会将$ rf_id,$ date,$ qf_id和$ failure_msg打印到一个文件中,问题出在获取第一个值的时候,它将$ rf_id的值存储为0,其余的值是根据需要打印的。rf_id是sumhow正在设置为0只在其他行的第一行就好了。 #!/usr/bin/perl use strict; use warnings; my $mailqdir = "/mail1.txt"; my $mqueue_directory = "/var/spool/mqueue/"; my $messages_removed = 0; my $rf_id; my $date; my $temp; my $tmp; my @write_array; my $to; my $from; my $subject; my $path_to_sendmail = "/usr/sbin/sendmail -f"; my $mailsubject = "Subject: Deleted Queued Mails from LSMGR sendmail \n\n\n"; […]

perl-mechanize遇到限制 – 开始几个debugging尝试

你好亲爱的开发者 首先 – 抱歉作为新手..我是相当新的Perl。 我试图学习一些关于Perl的同时玩代码和片段。 今天我有一个脚本,运行一个机械化的工作..但有点不跑到最后。 Waht的目标是:我想获得一些wesite-sceenshots的缩略图。 以及我运行这个脚本,这是写的做一些网站的截图我也起来和运行mozrepl。 最奇怪的是输出 – 见下面…问题:我应该改变脚本为什么我输出? #!/usr/bin/perl use strict; use warnings; use WWW::Mechanize::Firefox; my $mech = new WWW::Mechanize::Firefox(); open(INPUT, "<urls.txt") or die $!; while (<INPUT>) { chomp; print "$_\n"; $mech->get($_); my $png = $mech->content_as_png(); my $name = "$_"; $name =~s/^www\.//; $name .= ".png"; open(OUTPUT, ">$name"); print OUTPUT $png; sleep (5); […]