perl学习之路
发布时间:2020-12-15 23:42:07 所属栏目:大数据 来源:网络整理
导读:???????? ????perl来自Unix系统,而且目前也扎根于Unix中。Perl是实用摘录与报表语言(Practical?Extraction?and?Report?Language),大写P表示的“Perl"指的是程序语言,而小写p表示"perl"指的则是实际编译并运行程序的解释器。它的创作者是Larry,他创造的目
???????? ????perl来自Unix系统,而且目前也扎根于Unix中。Perl是实用摘录与报表语言(Practical?Extraction?and?Report?Language),大写P表示的“Perl"指的是程序语言,而小写p表示"perl"指的则是实际编译并运行程序的解释器。它的创作者是Larry,他创造的目的是能有Sell或awk一样能快速编程,有能具备grep,cut,sort和sed的高级功能,又能填补低级语言如c/c++或编程语言和高级语言之间的空隙。perl适合文字处理、业务流程管理,不适合做"封闭式"的程序,(如别人看不到你的秘密算法)。 ??????首先,我们来分析我写的一段莫版型的perl代码 ??????#!/usr/bin/perl?-w#这是你perl执行程序的绝对路径 ????use?strict;#引入strict?包它包下有些编码的规范规则,如果代码不符合规范,会发出警告 ????use?warnings; ????use?Getopt::Long; ????use?Data::Dumper; ????use?FindBin?qw($Bin?$Script); ????use?File::Basename?qw(basename?dirname); ????my?$BEGIN_TIME=time(); ????my?$version="1.0.0"; #?GetOptions my?($fIn,$fOut);#这是定义局部变量 GetOptions( ????????????????"help|?"?=>&;USAGE,????????????????"o:s"=>$fOut,????????????????"i:s"=>$fIn,????????????????)?or?&USAGE; &USAGE?unless?($fIn?and?$fOut);#这是获取命令行参数 open?(IN,$fIn)?or?die?$!;#打开一个文件是否成功,如果不成功则会输出系统提供的错误($!) open?(OUT,">$fOut")?or?die?$!; #$/=">";#这是一个分隔符,将文本的字符考“>”来分割,给你的对应变量 while?(<IN>)?{#<IN>是当你打开文件一直处于正常状态没有异常发生时 ????chomp; ????next?if?(/$/); ????my?@lines=split?/n/,$_; } close?IN; close?OUT; print?STDOUT?"nDone.?Total?elapsed?time?:?",time()-$BEGIN_TIME,"sn"; #?sub?function #定义你的函数如c语言,但是不需要像C?那样需要先声明 sub?ABSOLUTE_DIR{?#$pavfile=&ABSOLUTE_DIR($pavfile); ????my?$cur_dir=`pwd`;chomp($cur_dir); ????my?($in)=@_; ????my?$return=""; ????if(-f?$in){ ????????my?$dir=dirname($in); ????????my?$file=basename($in); ????????chdir?$dir;$dir=`pwd`;chomp?$dir; ????????$return="$dir/$file"; ????}elsif(-d?$in){ ????????chdir?$in;$return=`pwd`;chomp?$return; ????}else{ ????????warn?"Warning?just?for?file?and?dirn"; ????????exit; ????} ????chdir?$cur_dir; ????return?$return; } sub?max{#&max(lists?or?arry); ????#求列表中的最大值 ????my?$max=shift; ????my?$temp; ????while?(@_)?{ ????????$temp=shift; ????????$max=$max>$temp?$max:$temp; ????} ????return?$max; } sub?min{#&min(lists?or?arry); ????#求列表中的最小值 ????my?$min=shift; ????my?$temp; ????while?(@_)?{ ????????$temp=shift; ????????$min=$min<$temp?$min:$temp; ????} ????return?$min; } sub?revcom(){#&revcom($ref_seq); ????#获取字符串序列的反向互补序列,以字符串形式返回。ATTCCC->GGGAAT ????my?$seq=shift; ????$seq=~tr/ATCGatcg/TAGCtagc/; ????$seq=reverse?$seq; ????return?uc?$seq;??????????? } sub?GetTime?{ ????my?($sec,?$min,?$hour,?$day,?$mon,?$year,?$wday,?$yday,?$isdst)=localtime(time()); ????return?sprintf("%4d-%02d-%02d?%02d:%02d:%02d",?$year+1900,?$mon+1,?$sec); } sub?USAGE?{ ????my?$usage=<<"USAGE"; ?ProgramName: ?????Version:???$version ?????Contact:???Simon?Young?<yangxh@biomarker.com.cn>? Program?Date:???2012.07.02 ??????Modify:??? ?Description:???This?program?is?used?to?...... ???????Usage: ????????Options: ????????-i?<file>???input?file,xxx?format,forced ????????-o?<file>???output?file,optional ????????-h??????help USAGE ????print?$usage; ????exit; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |