草庐IT

perl-critic

全部标签

linux - 如何使用 sed 或 Perl 删除多行 block 中的部分行?

我有一些看起来像这样的数据。它有四个大块。每个block都以@字符开头。@SRR037212.1FC30L5TAA_102708:7:1:741:1355length=27AAAAAAAAAAAAAAAAAAAAAAAAAAA+SRR037212.1FC30L5TAA_102708:7:1:741:1355length=27::::::::::::::::::::::::;;8@SRR037212.2FC30L5TAA_102708:7:1:1045:1765length=27TATAACCAGAAAGTTACAAGTAAACAC+SRR037212.2FC30L5TAA_102708

linux - Perl inotify2 每次文件修改触发两次

我正在编写一个Perl脚本来监视文件的更改。#!/usr/bin/perlusestrict;useLinux::Inotify2;my$inotify=newLinux::Inotify2ordie$!;my$filename="/tmp/foo";my$counter=0;$inotify->watch($filename,IN_MODIFY,sub{++$counter;print"changed:$counter\n";})ordie$!;1while$inotify->poll;如果我这样测试它,每次/tmp/foo更改时都会调用此处理程序两次(两次递增$counter):e

linux - 使用 SED/Perl 删除包含数字的字符串部分

我有一个看起来像这样的数据:AB208804_1446576AB208804_1orf0AB208804_20446576AB208804_20orf0我想将它们转换成这样:AB208804446576AB208804orf0AB208804446576AB208804orf0只需删除第1列和第4列中的_\digit部分。为什么这条线不起作用:sed's/_\d+//g'正确的做法是什么(单行)? 最佳答案 您需要-r开关和sed的字符类。$echo"AB208804_1446576AB208804_1orf0"|sed-r's/_

linux - Perl one-liner 是否可以为给定的每个文件 arg 执行 END block

对于Perl单行代码,当使用-p或-n标志时是否可以使END{}block执行每个文件一次,而不是整个程序一次?换句话说,当我写:perl-ne'$count++if/.../;END{print"$ARGV:$count"if$count>0}'mysourcedir/*.html我想为每个文件执行一次ENDblock,而不是在程序执行结束时全局执行一次。目前我只是为此使用xargs,但想知道Perl是否可能有一些替代标志用于该行为。echomysourcedir/*.html|xargs-n1perl-ne'$count++if/.../;END{print"$ARGV:$coun

linux - Perl 模块错误 - defined(%hash) 已弃用

背景:我正在努力将Linux服务器从Ubuntu10.04迁移到更新的服务器12.04该服务器负责通过crontabs执行多个Perl模块。这些Perl模块严重依赖30-40个perl扩展。我已经安装了所有Perl扩展,并且crontab能够成功处理,除了这些Perl扩展的较新版本导致的几个语法错误。我需要一些帮助来修改语法以使Perl脚本按预期进行处理。错误:defined(%hash)isdeprecatedatpm/Alerts/Alerts.pmline943.(Maybeyoushouldjustomitthedefined()?)defined(%hash)isdeprec

linux - Perl 中的条件拆分

我有以下句子:my$sent='D.discoideumandD.purpureumdevelopmentalprogramsrevealed';有没有一种方法可以拆分行,以便两个连续的单词具有“。”中间的(点)会被当成一个词吗?因此我们希望split后得到这个:$VAR=['D.discoideum','and','D.purpureum','developmental','programs','revealed'];标准的s/\s+//g将根据空间拆分所有内容。 最佳答案 尝试拆分:/(?此表达式匹配任何不跟在句点后面的空格字符

linux - 如何在 Perl 中使用记录分隔符

我有一个看起来像这样的数据--read50_1:read1391364_2,read3529226_1,--read46_2:read916_1,read178252_2,read1336397_1,read1824459_2,read916_1:read0_1--read34_1:read209771_2,--read32_2:read520377_2,我想做的是访问不包括记录分隔符“--”的条目。但为什么这段代码不这样做呢?my$INFILE_file_name="myfile.txt";#inputfilenamemy$content='';open(INFILE,';print

linux - 我如何在 Perl 中使用 paste 和 awk?

我有以下代码,其中使用了“粘贴”和AWK脚本Perl。usestrict;useData::Dumper;useCarp;useFile::Basename;my@files=glob("result/*-*.txt");my$tocheck=$ARGV[0]||"M";foreachmy$file(@files){my$base=basename($file,".txt");my@res=`paste为什么报错:#sh:-c:line1:syntaxerrornearunexpectedtoken`('#sh:-c:line1:`paste正确的做法是什么?

linux - 如何在 Perl 中将 Linux 键码从/dev/input/event* 转换为 ASCII?

我正在编写一个Perl脚本,从臭名昭著的/dev/input/event*读取数据,但我没有找到将内核生成的关键代码转换为ASCII的方法。我说的是这张表中的linux键码here如果不将数组硬编码到脚本中,我似乎找不到可以帮助我翻译它们的东西。我错过了什么吗?我想跳过数组部分,因为这似乎不是一个好的做法,有什么想法吗?:) 最佳答案 不幸的是,我不会用Perl编程,但这里有一个用C编写的简单示例。也许它可能对您有所帮助。/**Basedonkeytable.cbyMauroCarvalhoChehab**Thisprogramis

c - 将数据从 c 发送到 perl

我需要将一些数据从c程序发送到同时处于运行模式(Perl程序处于sleep模式和c程序正在运行,c程序将数据发送到Perl)的Perl程序。我知道,可以通过套接字和共享内存编写这个程序,但我有性能问题。我认为共享内存是更好的解决方案,我如何向Perl程序发出信号以唤醒并恢复运行并读取c发送的数据? 最佳答案 你似乎有两个问题:如何在Perl程序和您的C程序之间共享内存,以及如何通知Perl程序有新数据可用假设您使用的系统允许SysVIPC调用,您可以使用IPC::ShareLite在两个进程之间共享一block内存。与共享内存一样,