new($file_1) or die $!; my $fh_"/> new($file_1) or die $!; my $fh_">
实践证明可以运行!
perl高效编程pdf perl语言编程第六版pdf
#!/usr/bin/perl
use warnings;
use strict;
use IO::File;
my $file_1 = "./wenti/data1.txt";
my $file_2 = "./wenti/data2.txt";
sub main(){
my $fh_1 = IO::File->new($file_1) or die $!;
my $fh_2 = IO::File->new($file_2) or die $!;
while(<$fh_1>){
chomp();
my $num = $_;
my $fh_2 = IO::File->new($file_2) or die $!;
while(<$fh_2>){
chomp();
my @date = split / /,$_;
my $wdate = $date[0];
if($num eq $wdate){
print $_,"\n";
}}
}}
&main;
编一个perl的脚本程序,把变的部分(IP地址)作为perl程序的参数。然后给每个机器上给定不同的参数,执行该perl程序。
更进一步, linux应该支持远程shell比如rsh,或者类似的命令。在本机上弄一个主控的perl脚本,调用上述的perl脚本。这样就不需要登陆各个机器执行perl程序了。
比如:设置服务器的perl脚本,比如叫:setup_server.pl。它接受IP地址作为参数:
$ setup_server.pl 192.168.1.100
然后,主控的机器上,弄一个shell脚本(sh/csh/bash等均可)。比如叫:do_setup_all.sh:
rsh 192.168.1.100 setup_serverl.pl 192.168.1.100
rsh 192.168.1.101 setup_serverl.pl 192.168.1.101
...
rsh 192.168.1.199 setup_serverl.pl 192.168.1.199
注意:
setup_serverl.pl估计得先cp到各个机器上 每个server应该容许当前用户登录,而且容许执行rsh
,只需要执行下面命令就OK了:
$ do_setup_all.sh
perl语言编程课程感兴趣的内容主要有正则表达式、文件作、字符串作、面向过程和面向对象、CPAN模块。
1、正则表达式:perl语言处理正则表达式强大,可以用极简单的表达式完成很复杂的文本处理任务。掌握好正则表达式,可以提高perl程序的开发效率和功能。这也是感兴趣的一个perl语言特性。
2、文件作:perl有很多内置函数可以轻松实现文件读取、写入、、移动、删除等作。对文件的全面处理是perl的一大优势,这些函数和功能可以很方便的进行文件处理相关的程序开发。
3、字符串作:perl也内置了丰富的字符串作函数,可以灵活完成切片、查找、替换、分割、连接等各种作。字符串的强大处理能力也是perl的一大亮点。
4、面向过程和面向对象:perl支持面向过程和面向对象两种编程范式。可以按需选择合适的范式,如对算法复杂的可以选择面向对象,简单的功能可以采用面向过程实现。这使perl具有很高的灵活性。
5、CPAN模块:CPAN存放了海量优质的perl模块,涵盖了所有的功能和应用领域。使用CPAN模块可以提高开发效率和程序功能。掌握CPAN模块的使用也是学习perl的重点之一。
不需要你自己重新来写,单枪匹马,刀耕火种,不是一个好的办法。
正好我也在做bioinformatics这块儿,学了点bioperl,我帮你写了个小脚本,用这个工具能很快捷的搞定你的序列!!
我大致给你说下,具体自己上bioperl网站看How To。
现在假定你的序列都为fasta格式,先用
cat .fasta > single_all_fasta.fasta
将所有fasta序列整合到一个fasta格式中。
然后编写bioperl脚本(你要事先安ioperl,在debian和ubuntu下很简单,自带源里就有,直接sudo apt-get install bioperl即可,很方便),你参考下:
脚本使用方法为:
perl get_fasta_length.pl single_all_fasta.fasta length.result
脚本我没有测试,一些小错误你可以修改下:
#!/usr/bin/perl -w
use strict;
use Bio::SeqIO;
my $in = shift; #读取文件名称
my $out = shift; #读取输出文件名称
my $flag = 0; #计数
open WH,">> $out";
$seqio_obj= Bio::SeqIO->new (-file =>'$in',
-f =>'fasta');
while($seq_obj = $seqio_obj->next_seq() ) {
print WH "$seq_obj->desc \t $seq_obj->length\n" ;
print "正在处理第$flag条序列...\n";
$flag++;
}print "完毕,共处理$flag条序列!结果保存至$out文件\n";
close WH;
建议:
学好bioinfo,不会perl不行,不会bioperl更不行,它不仅可以轻松批量处理序列格式,解析blast结果,甚至在脚本里做blast,而且还可以作biosql数据库。呵呵 建议深入学习下。
Perl语言是由Larry Wall设计的文字分析报告语言,用于Unix环境下的编程.
发展前景:目前还在用Perl语言开发大型网站的只有日美英,其中日本工作机会多,可考虑。
国内现在一般用PHO ,JAVA。perl作为一种高级语言,特别适合快速开发,尤其是快速原型开发,工具开发等。perl也许很多项目里面不会用到,但是如果你会用perl,那么你就比别人多了一把瑞士,可以做一些意想不到的事情。
Perl强项在于文本处理,或者作为各种程序之间的“胶水,它有着自动识别变量的特征,可以写动态网页,而且拥有大量的共享插件可以用。Perl是一个完整的编程语言,其他编程语言能做的事情他都能做(复杂程度可能有所不同)。
在文本处理方面,生物信息学中用的很多很多。
扩展资料:
Perl编程小技巧
1、Perl超时机制
eval
{my $tmpCmd="ping 192.168.0.1";
local $SIG{ALRM} = sub { alarm 0; die "TIMEOUT"; };
alarm(10);
my $startCmdResult = qx($tmpCmd);
alarm(0);
};
if ($@ =~ /TIMEOUT/)
{print "ping timeout";
}2、忽略SIGCHLD信号,避免产生僵尸进程
$SIG{CHLD} = 'IGNORE';
3、等待
sub show_flower
{local $| = 1;
my @progress_symbol = ('-','\\','|','/');
my $n = 0;
my $count=8;
while($count--)
{#print "
$n = ($n>=3)? 0:$n+1;
select(undef, undef, undef, 0.1);
}#print "
local $| = 0;
}4、 Perl多行注释
单行注释:用#号
多行注释:
常用的方法是使用 POD(Plain Old Documentations) 来进行多行注释。方法如下:
=pod
codes to comment
=cut
5、类似于unix shell中的“此处文档”语法
#!/usr/bin/perl -w
$P = 3.1415926;
print < the price is $P. Hello World. EOF 6. Perl常量的用法 use constant PI => ( 4 atan2(1,1) ); PI=6; # Cannot modify PI; produces an error. use constant DEBUG => 1; print "Pi equals ", PI, "... 参考资料来源: 学习窍门: 1、查询文档 如果你对某个函数的使用不清楚,那么在命令行上使用 perldoc 函数名 来查阅 Perl 自带文档。你也可以把 函数名 替换为模块名来查阅模块文档。例如perldoc LWP::Simple 当然, 如果英文有困难的话,还是建议阅读 Oreilly 书籍。 2、程序调试 不管你的程序多短,使用 use warnings 和 use strict 对你找到错误有非常大的帮助。庆幸的是, klaus 已经翻译了一篇绝妙的调试文章 Brian 的 Perl 问题之指南 3、提问的智慧和寻找答案的能力 初学时碰到的许多问题 都已经被别人问过了而且很有可能已经被回答了。 所以,要学会使用 google 或论坛搜索你的答案。遇到问题时,可以把问题表达出来,阅读相关文档,尝试写程序自己解决。 如果实在没有头绪的话,尝试到论坛里或者是用户组来提 问,通常,大家更乐意帮助那些已经对自己的问题作过研究的人,那些只要答案的人常常没人理睬。 学习语言是一个自己反复研究,尝试的过程,不要依靠别人的帮 助。如何系统的学习Perl语言