加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读