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;}