perl脚本语法,perl脚本执行命令
谁帮我解释下这个Perl脚本,越详细越好
在指定目录下,遍历所有文件包括子目录下文件,寻找关键词,并打印出来!
指定目录为第一个参数,关键词为第二个,比如该脚本名为 find.pl
用法应该就是 find.pl空格目录名空格文件名。 有段时间没用perl了,大概说一下吧,不对的见谅阿。
#!/usr/bin/perl ##类unix系统下告知系统这是perl脚本 前提是需要文件为可执行
sub subdir { ##找到和这个 { 向对应的 } 这里是 过程 subdir 大体功能是把目录存入数组@dir
##把文件存入数组@file
@tmp=(); ##声明临时数组@tmp
$rootdir=shift; ##从参数中读取目录名,就是subdir($ARGV[0])里的$ARGV[0].
opendir(DIR, $rootdir);##打开目录
@tmp = readdir(DIR);##读取目录,把目录下的文件和子目录名字都读进取。只是名字哦!
$start=@dir;#目录数组的旧终点 ##设置标志位,用于在主程序中判断目录是否为空
for (local $i=2;$i=@tmp-1;$i++) #从2开始是要跳过./和../目录
{ ##开始对@tmp下的内容进行分类整理
if (-d $rootdir.'/'.$tmp[$i]) {push (@dir,$rootdir.'/'.$tmp[$i]);} #是目录(文件夹)放进@dir数组
if (-f $rootdir.'/'.$tmp[$i]) {push (@file,$rootdir.'/'.$tmp[$i]);}##是文件,放进@file数组
}
$end=@dir;#目录数组的新终点 ##设置另一个标志位,用途同$start。
closedir(DIR); #关闭句柄
@tmp=();# 临时数组清空 ,为了后续读取子目录下的内容做准备。
#print $start."-";
#print $end."\n";
}
subdir($ARGV[0]); ##这里是主程序开始的地方,@ARGV数组包含环境变量,就是执行的时候
##跟在文件名后面的东西开始第一个就是$ARGV[0],第二个是ARGV[1],以此类推.....
#start=end说明经过上一条(下一条)命令,数组没有变化(开始兼结尾)
if ($start ne $end) {for ($k=$start;$k=$end-1;$k++){subdir($dir[$k]);}}
##上面这条的意思就是,如果该目录下无子目录那就算了,如果有,用subdir挨个处理子目录
##个人认为这个写的有问题,因为如果$ARGV[0]所指目录包含2层以上(含两层)子目录的话,
##脚本就做不好完全的遍历....具体改进方法可参考下面文件读取时的做法..
#foreach $f (@file){
#chomp $f;
#print "$f\r\n";
#}
#exit;
foreach $f (@file){##此时@file数组中保存的全部都是文件名
chomp $f; ##除去文件名后的 换行符
open F,$f or next; ##打开文件句柄,打不开这个就去试试打开下一个.....
while(F){ ##读取文件,一行一行来,读取到EOF标志是while循环结束
if($_=~ m/$ARGV[1]/){ ##如果当前行中有和 $ARGV[1]中需要查询字符一样的字符
print "$f\r\n";last; ##打印出文件名
}
}
close F; ##关闭文件句柄
}
----------------------------------差不多就是这样的了,perl用起来还是很方便的就是需要记的东西相对多点儿,而且一点不对,不好调试,这个脚本写的不是很规范,虽然语法检查没问题。但是运行起来貌似有死循环,最后只好kill掉了..........目前只能看这么多了
有一个很好的介绍Perl程序吗
Perl 最初的设计者为拉里·沃尔(Larry Wall),它于1987年12月18日发表。Perl借取了C、sed、awk、shell scripting以及很多其他程序语言的特性。Larry Wall在新闻组comp.sources.misc发布了Perl脚本语言1.0版,当时他是Unisys公司的一名程序员。Perl借鉴了sh、Awk和Sed等脚本语言的特性,试图成为一个能简化报告处理的通用 Unix脚本语言。
Perl 2在1988年发布,增加了更多特性,拥有更好的正则表达式引擎。Perl 3和 Perl 4分别在1989年和1991年发布,而1994年发布的 Perl 5则是最重要的一个版本,至今仍在开发中。2000年启动的Perl 6则完全重写了Perl,基于不同的原则,开发者决定先制定语言规格。Perl 6的发布日期被认为是圣诞节,但没有指定哪一年的圣诞节。Perl 5公布了16个版本,Perl 5.6在2000年发布,Perl 5.8的持续开发贯穿了2002-08年,5.10在2007年发布,5.12在2010年发布,此后 Perl开始采用每月发布一个版本每年发布一个稳定版本的发布周期,5.14在2011年发布,5.16于2012年发布。
Perl 一般被称为“实用报表提取语言”(PracticalExtraction andReportLanguage),虽然有时被称做“病态折中垃圾列表器”(PathologicallyEclectic Rubbish Lister)。它是术语,而不仅仅是简写,Perl的创造者,LarryWall提出第一个,但很快又扩展到第二个。那就是为什么“Perl”没有所有 字母都大写。没必要争论那一个正确,Larry 两个都认可。你也可能看到“perl”,所有的字母都是小写的。一般,“Perl”,有大写的 P,是指语言本身,而“perl”,小写的 p,是指程序运行的解释器。Perl的正式网站是 。
Perl 的特点
Perl的解释程序是开放源码的免费软件,使用Perl不必担心费用,Perl能在绝大多数操作系统运行,可以方便地向不同操作系统迁移。
Perl 是一种能完成任务的语言。从一开始,Perl 就设计成可以把简单工作简单化,同时又不失去处理困难问题能力的语言。它可以很容易操作数字、文本、文件和目录、计算机和网络、特别是程序的语言。这种语言应该很容易运行外部的程序并且扫描这些程序的输出获取感兴趣的东西,而且它还应该很容易能把这些你感兴趣的东西交给其它程序做特殊的处理,当然这种语言还应该很容易在任何现代的操作系统上可以移植地编译和运行。
Perl 基本语法
标量定义,以$号开头,如:$num =1;
数组定义,以@开头,如:@array = (1,2,3);
数组元素调用 @array[index],其中index表示数组下标,如上例,@array[0]的值是1
散列定义,以%开头,如:%hash=("a",1,"b",2);
散列调用 %hash,其中key表示键值,如上例,%hash{"b"}的值是1
Perl 的哲学
Perl追求的是简单, 解决一个一般的问题用它几行代码就完成了. 一个稍复杂一点的问题代码也不会超过一屏! 事实上, 大多数人用Perl写的程序大多都没超过100行.
Perl 最初是当做一种 Unix 的胶水语言设计的,但是她早就移植到大多数其它操作系统里了。因为 Perl 几乎可以在任何地方运行,所以 Perl 可以说是当今最具有移植性的编程环境。要想写可移植的 C/C++ 程序,你得在程序里加上一大堆 #ifdef 标签来区分不同的系统。要想写可移植的 Java 程序,你必须理解每种新的 Java 实现的特质。要想写可移植的shell,你可能要记住每条命令在每种操作系统上的语法,走运的时候你可能可以找到一些公共的东西。而要想写可移植的 Visual Basic 程序,那么你只需要对“移植”有个更灵活的定义就可以了。
我们很高兴的是 Perl 避免了所有这些问题,同时还保留了这些语言中的许多优点,同时还有一些自己的特色。Perl 的特色来自许多方面:它的特性集的工具,Perl 社区的创造性,以及开源运动的大环境。不过,许多这些特性都是混合的东西;Perl 的身世复杂,它总是把事物看成是优点的不同方面,而不是弱点。Perl 是“背黑锅我来”的语言。如果你觉得自己陷入一团乱麻之中,非常渴望自由,那么请使用 Perl。
Perl 是跨文化的。Perl 的爆炸性增长很大程度上是因为那些前 Unix 系统程序员的渴望,他们希望从他们的“老家”带着尽可能多的东西。对于他们而言,Perl 是可移植的 Unix 文化蒸馏器,是"此路不通"的沙漠中的绿洲。从另外一个角度来看,Perl 还可以从另外一个方向运转:在 Windows 上工作的 web 设计者通常会非常开心地发现他们的 Perl 程序可以不加修改地在 Unix 服务器上跑。
尽管 Perl 在系统程序员和 web 设计师中间非常流行,但这只是因为是他们最早发现 Perl 的,Perl 可以用于更广泛的用途。从 Perl 最早的文本处理语言开始,它已经发展成为一种非常复杂的,通用的编程语言,以及完整的开发环境,包括调试器、调节器、交叉引用、编译器、库、语法提示编辑器,以及所有其它“真正”的编程语言所具有的所有挂勾,只要你需要。当然这些东西都是让我们可能处理难的问题的东西,而且很多其它语言也可以做到这一点。 Perl 之所以成为 Perl 是因为它从来不会因为保持简单事情简单化而丢失其他方面的特性。
因为 Perl 既强大又好用,所以它被广泛地用于日常生活的方方面面,从宇航工程到分子生物学,从数学到语言学,从图形处理到文档处理,从数据库操作到网络管理。很多人用 Perl 进行快速处理那些很难分析或转换的大批量数据,不管你是处理 DNA 序列、网页、还是猪肚皮的未来都无所谓。实际上,在 Perl社区有一个笑话就是,下次股市大崩盘就很有可能是呢个家伙写的脚本里头有臭虫造成的。(不过,乐观点来看就是,任何还在失业的股票分析师仍然有可以利用的。)
Perl 的成功有许多原因。Perl 早在开源软件的名字出现之前就已经是一个成功的开源项目了。Perl 是自由的,并将永远自由下去。你可以在任何合适的场合使用Perl,只需要遵守一个非常自由的版权就可以了。如果你在从事商业活动并且还想使用 Perl,那么用就是了。你可以把 Perl 嵌入到你写的商业软件中而不需要支付任何费用也没有任何限制。如果你碰上一个Perl社区解决不了的问题,那你也还有最后的一招:源程序本身。Perl 社区不会在“升级”的伪装下租给你它们的商业秘密,而且Perl 社区也不会“停业”,更不会让你孤立无援。
Perl 是自由软件这一点无疑对它是有帮助的。但这一条并不足以解释 Perl 现象,因为许多自由软件包没有能繁荣起来。Perl 不仅自由;而且好玩。人们觉得自己在 Perl 里可以有创造力,因为它们有表达的自由:他们可以选择是为计算机速度优化还是为程序员的速度优化,是冗长还是简洁,是选择可读性还是可维护性,或者选择复用性、移植性、接受性和传授性等等。假如你进入一次模糊的 Perl 比赛,甚至你还可以为模糊性做优化。
Perl 可以给予你所有这些自由,因为它是一门有着分裂人格的语言,Perl 同时是很简单并且很富有的语言。Perl 从其它地方拿来好主意,然后把它们安装到易用的框架里面。对于只是喜欢她的人来说,Perl 是实用抽取和报表语言(Practical Extractoin and Report Language)。对那些热爱她的人而言,她是变态电子垃圾制造者(Pathologically Electric Rubbish Lister)。在少数人眼里,Perl 是毫无意义的重复练习,不过世界需要一点点冗余,精简主义者总是想把事物分隔开,而我们则总是企图把它们合并到一起。
Perl 之所以是简单的语言是有很多原因的。比如你用不着知道什么特殊的指令就可以编译 Perl 程序--只要把它当做批处理或者shell 脚本执行就可以了。Perl 的类型和结构很容易使用和理解。Perl 对你的数据没有任何限制--你的字串和数组可以要多长就多长(只要你有足够的内存),而且它们都会自动增长。Perl 不会强迫你学习新的语法和语意,Perl 改从许多其它你已经熟悉的语言里(比如 C、awk、BASIC 和 Python、英文、希腊语等)借来语法。实际上,任何程序员都可以从书写良好的 Perl 代码段中读懂它的含义。
最重要的是,你不用先学习所有 Perl 的东西就可以开始写有用的程序。你可以写很小的 Perl 程序。你也可以象小孩那样写 Perl 程序,我们保证不会笑话你。或者更准确地说是,我们绝不会笑话小孩做事情的创造性。Perl 里的许多观点都是从自然语言中借来的,其中一条最好的观点就是只要你能把自己的意思表述清楚,那么你就可以使用这些语言的一个子集。Perl 文化可以接受任何熟练程度的成员。我们不会在你背后放个语言警察。如果你的老板不炒你,而且你的 Perl 脚本也能完成工作,那么它就是“正确”的。
尽管 Perl 很简单,但它仍然是一种特性很丰富的语言,如果你想用那些特性的话,那你就要学习一些东西,这也是把难题变简单的学费。虽然你要想把所有 Perl 能做的事情吸收还需要一些时间,但到你需要这些功能的时候你就会非常开心地发现 Perl 已经可以做这些事情了。
由于 Perl 的继承性,就算它只是用做数据归纳语言的时候也有丰富的特性,Perl 一开始就设计成可以浏览文件,扫描大量文本并且生成动态数据以及打印出这些数据的良好格式化的报表。不过,随后 Perl 就开始风行,于是它就成了可以操作文件系统、进程管理、数据库管理、进行 C/S 编程和安全编程、web 信息管理、甚至可以进行面向对象和面向功能的编程的语言。而且这些功能并非只是在 Perl 这边,每种新功能都和其它东西交流得很好,别忘了 Perl 从一开始就是设计成胶水语言的。
而且 Perl 并不仅仅只能黏合它自己的特性。Perl 是设计成可以用模块扩展的语言。你可以用 Perl 快速设计,编写,调试和部署 Perl 应用,并且你还可以在需要的时候很方便地扩展这些应用。你可以在其它语言里嵌入Perl,而且你也可以在 Perl 里嵌入其它语言。通过模块输入机制,你可以把这些外部的扩展当做内置于 Perl 的特性。那些面向对象的外部库在 Perl 内部仍然保持面向对象的特征。
Perl 还在许多其它方面协助你。和严格的每次执行一条命令的命令文件和 shell 脚本不同的是,Perl 先把你的程序快速编译成一种内部格式。和其它任何编译器一样,这个时候还进行各种优化,同时把碰到的任何问题反馈给你。一旦 Perl 的编译器前端对你的程序表示满意了,它就把这些中间代码交给解释器执行(或者是给其它的能生成C或者字节码的模块后端)。听起来挺复杂,不过 Perl 的编译器和解释器干这些活效率相当高,我们的编译-运行-修改的过程几乎都是以秒计。再加上 Perl 的许多其他开发特性,这种快速的角色转换很适合做快速原型设计。然后随着你的程序的成熟,你可以逐步拧紧身上的螺母,减少散漫增强记律。如果你做得好,Perl 也能帮你这个忙。
perl是脚本语言还是什么语言?
Perl简介Perl最初只是Unix系统管理员的一个工具,在工作日里被用在无数的小任务中。从那以后,它逐步发展成为一种全功能的程序设计语言,特别是在各种计算平台上,它被用作Web编程、数据库处理、XML处理以及系统管理——它能够完成所有这些工作,同时仍然是处理小的日常工作的完美工具,这是它的设计初衷。Perl快速、有趣,而且特别有用。很多人因为需要Perl而使用它,又因为热爱它而继续使用它。_摘自Perl语言入门Oreilly_*Perl是一门自由且功能强大的编程语言。自1987年初次登台亮相以来,它的用户数一直急剧膨胀。从最初被当作一种在跨平台环境中书写可移植工具的高级语言开始,Perl就已经被广泛地认为是一种工业级的强大工具,可以在任何地方用来完成你的工作。Perl特别适合系统管理和Web编程。Perl实际上已经被所有Unix(包括Linux)捆绑在一起作为标准部件发布,而且也被广泛用于MicrosoftWindows和几乎所有其他操作系统。Amiga、BeOS、VMS、MVS和AppleMacintosh等也只是Perl已经完成移植的平台的一小部分。_摘自Perl语言编程Oreilly_很多人使用Perl来替代shell,很多人使用Perl来避免编写繁琐的C,C 或Java程序.如果你的程序要求高效率,你可以把费时部分用C写,然后与Perl结合使用.你几乎可以使用Perl来解决所有问题.使用Perl与否完全是你的决定:)
perl脚本语言,在Perl脚本语言下,如何修改文件内容?
Linux中使用Perl修改文件当你编写脚本或是安装程序的时候,就需要修改特定文件的数据,如果这时有自动修改文件的功能,那将会是非常实用的。例如,当你需要移动一个文件中的某个字符串或是命令,当你要改变许多文件的IP地址的时候,这个功能就可以拿来利用了。手动改变这些文件会耗费很长的时间,特别当它是一件重复性的任务。但是,你可以使用Perl程序来完成。所有的Linux供应商都有这个程序。执行以下操作:$perl-pi-e's|[old_string]|[new_string]|g'[file]字符串可以是简单的命令或是常规的表达式。如果你要改变目录的位置(例:从/var/spool/mail到/var/spool/messages),你想要改变目录/etc下的每个文件来反映路径变化。执行以下操作:$find/etc-typef|xargsperl-pi-e's|\/var\/spool\/mail|\/var\/spool\/messages|g'在这个例子上,我们使用搜索和xargs来确保系统只运行常规文件的命令,而不是非常规目录或其它文件类型的命令。这也就运行了/etc目录树,而且会递归的改变所有文件。由于我们/标识,所以我们必须输入了像\/var这样的路径而不是/var。Linux中使用Perl修改文件时我们也可以在Perl表达式使用分隔符。(除了使用|,你也能够使用/,#,@作为分隔符。)执行以下操作,从整个文件里移开一个命令$perl-pi-e's|myword||g'file这就从基本上没有使用任何东西却代替了“myword”.(需要注意的是在第二个和第三个分隔符之间没有空格)。以这种方式使用Perl的话,当你修改配置文件或其它任何类型的数据的时候,你就会极具创造力。它就是一个自动搜索和代替的功能。
perl名词解释
perl
Perl,一种功能丰富的计算机程序语言,运行在超过100种计算机平台上,适用广泛,从大型机到便携设备,从快速原型创建到大规模可扩展开发。
Perl最初的设计者为拉里·沃尔(Larry Wall),于1987年12月18日发表。现在的版本为Perl 6,于2015年12月25日更新。
Perl借取了C、sed、awk、shell 脚本语言以及很多其他程序语言的特性,其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。简而言之,Perl像C一样强大,像awk、sed等脚本描述语言一样方便,被Perl语言爱好者称之为"一种拥有各种语言功能的梦幻脚本语言"、"Unix 中的王牌工具"。
Perl 一般被称为"实用报表提取语言"(Practical Extraction and Report Language),你也可能看到"perl",所有的字母都是小写的。一般,"Perl",有大写的 P,是指语言本身,而"perl",小写的 p,是指程序运行的解释器。
中文名
实际抽取与汇报语言
外文名
Perl(Practical Extraction and Reporting Language)
设计者
拉里·沃尔
设计时间
1987年12月18日
借取程序语言
C、awk、shell scripting等
perl开发perl语言为什么不流行perl官网下载string ppilimma bioconductororg.Hs.eg.dbTCGA GDCGeneCardsTCGAtcga gdc
引言
1987年Larry Wall发布Perl1.0以来,用户数一直急剧增加,同时越来越多的程序员与软件开发者(商)参与Perl的开发。从最初被当做一种跨平台环境中书写可移植工具的高级语言开始,Perl被广泛地认为是一种工业级的强大工具,可以在任何地方用来完成你的工作。perl的前身是Unix系统管理的一个工具,被用在无数的小任务里。后逐渐发展成为一种功能强大的程序设计语言,用作Web编程、数据库处理、XML处理以及系统管理;在完成这些工作时,同时仍能处理日常细小工作,这是它的设计初衷。Perl特别适合系统管理和Web编程。实际上已经被用在所有Unix(包括Linux)捆绑在一起作为标准部件发布,同时也用于Microsoft Windows和几乎所有操作系统。Perl的应用非常广泛。
基本信息
Perl 最初的设计者为拉里·沃尔(Larry Wall),他于1987年12月18日发表。Perl借取了C、sed、awk、shell 脚本语言以及很多其他程序语言的特性。其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。
Perl 被称为"实用报表提取语言"(Practical Extraction and Report Language)。它是术语,而不仅仅是简写,Perl的创造者,Larry Wall提出第一个,但很快又扩展到第二个。那就是为什么"Perl"没有所有字母都大写。没必要争论哪一个正确,Larry 两个都认可。
编程语言
Perl是由Larry Wall设计的,并由他不断更新和维护的编程语言。
Perl具有高级语言(如C)的强大能力和灵活性。事实上,你将看到,它的许多特性是从C语言中借用来的。
Perl与脚本语言一样,Perl不需要编译器和链接器来运行代码,你要做的只是写出程序并告诉Perl来运行而已。这意味着Perl对于小的编程问题的快速解决方案和为大型事件创建原型来测试潜在的解决方案是十分理想的。
Perl提供脚本语言(如sed和awk)的所有功能,还具有它们所不具备的很多功能。Perl还支持sed到Perl及awk到Perl的翻译器。
简而言之,Perl像C一样强大,像awk、sed等脚本描述语言一样方便。
特点
Perl的解释程序是开放源码的免费软件,使用Perl不必担心费用。Perl能在绝大多数操作系统运行,可以方便地向不同操作系统迁移。
Perl 是一种能完成任务的语言。从一开始,Perl 就设计成可以把简单工作简单化,同时又不失去处理困难问题能力的语言。它可以很容易操作数字,文本,文件和目录,计算机和网络,特别是程序的语言。这种语言应该很容易运行外部的程序并且扫描这些程序的输出获取感兴趣的东西。而且它还应该很容易能把这些你感兴趣的东西交给其它程序做特殊的处理。当然,这种语言还应该很容易在任何现代的操作系统上可以移植地编译和运行。
扩展资料:
360百科
目录
引言
基本信息
编程语言
特点
基本语法
优点
缺点
相关文化
时势造英雄
Perl 诗歌
下载安装
其他信息
perl
Perl,一种功能丰富的计算机程序语言,运行在超过100种计算机平台上,适用广泛,从大型机到便携设备,从快速原型创建到大规模可扩展开发。
Perl最初的设计者为拉里·沃尔(Larry Wall),于1987年12月18日发表。现在的版本为Perl 6,于2015年12月25日更新。
Perl借取了C、sed、awk、shell 脚本语言以及很多其他程序语言的特性,其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。简而言之,Perl像C一样强大,像awk、sed等脚本描述语言一样方便,被Perl语言爱好者称之为"一种拥有各种语言功能的梦幻脚本语言"、"Unix 中的王牌工具"。
Perl 一般被称为"实用报表提取语言"(Practical Extraction and Report Language),你也可能看到"perl",所有的字母都是小写的。一般,"Perl",有大写的 P,是指语言本身,而"perl",小写的 p,是指程序运行的解释器。
中文名
实际抽取与汇报语言
外文名
Perl(Practical Extraction and Reporting Language)
设计者
拉里·沃尔
设计时间
1987年12月18日
借取程序语言
C、awk、shell scripting等
perl开发perl语言为什么不流行perl官网下载string ppilimma bioconductororg.Hs.eg.dbTCGA GDCGeneCardsTCGAtcga gdc
引言
1987年Larry Wall发布Perl1.0以来,用户数一直急剧增加,同时越来越多的程序员与软件开发者(商)参与Perl的开发。从最初被当做一种跨平台环境中书写可移植工具的高级语言开始,Perl被广泛地认为是一种工业级的强大工具,可以在任何地方用来完成你的工作。perl的前身是Unix系统管理的一个工具,被用在无数的小任务里。后逐渐发展成为一种功能强大的程序设计语言,用作Web编程、数据库处理、XML处理以及系统管理;在完成这些工作时,同时仍能处理日常细小工作,这是它的设计初衷。Perl特别适合系统管理和Web编程。实际上已经被用在所有Unix(包括Linux)捆绑在一起作为标准部件发布,同时也用于Microsoft Windows和几乎所有操作系统。Perl的应用非常广泛。
基本信息
Perl 最初的设计者为拉里·沃尔(Larry Wall),他于1987年12月18日发表。Perl借取了C、sed、awk、shell 脚本语言以及很多其他程序语言的特性。其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。
perl 脚本语句
有两个意思:
1. instance id 标识了 adapter ,可以用作引用的关键值。
2. 变量 adapter 在 perl 进程中可以直接引用 \$adapter,如果在 perl 进程内传递 adapter 不需要 instance id,直接传递 adapter 就行了。但如果 adapter 所关心的资源在 perl 进程外,那么可能需要 instance id 来与外界交互。