|
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 () {#是当你打开文件一直处于正常状态没有异常发生时
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=$minGGGAAT
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= |
|
|