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";# GetOptionsmy ($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 () {# 是当你打开文件一直处于正常状态没有异常发生时 chomp; next if (/$/); my @lines=split /\n/,$_;}close IN;close OUT;print STDOUT "\nDone. Total elapsed time : ",time()-$BEGIN_TIME,"s\n";# 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 dir\n"; 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, $day, $hour, $min, $sec);}sub USAGE { my $usage=<<"USAGE"; ProgramName: Version: $version Contact: Simon Young Program Date: 2012.07.02 Modify: Description: This program is used to ...... Usage: Options: -i input file,xxx format,forced -o output file,optional -h helpUSAGE print $usage; exit;}