perl实例(关于perl中的类、对象、引用、方法分别都是什么概念)
本文目录
- 关于perl中的类、对象、引用、方法分别都是什么概念
- perl语言正则表达式如何在多行中匹配请举例
- 菜鸟求助:关于perl多进程
- 求生物信息学相关的 应用Perl 语言的 简单案例
- 如何使用Perl语言在windows下编写图形化窗口程序啊,求大师,最好给个例子瞅瞅
- 如何利用perl命令行, 来执行正则表达式,寻找匹配的行
- Perl 小骆驼书中下面的这个例子, 作用是怎样的foreach循环里匹配的是什么内容
关于perl中的类、对象、引用、方法分别都是什么概念
首先, Perl 里面是没有实在 “类“ ( Class ) 和 “对象“ ( Object ) , 一切都是 “引用“ ( Reference ) .
不过在写法和架构上很像 OO 而己. 所以, 只要你的写法合乎 “引用“ 的基础, 那就是一句对的指令. 这个概念很重要.
a. File::Basename(后面接::dirname) 是直接调用类的方法. 意义在於, 你不需要先从类得到对像才能呼叫这个方法
b.File::Spec-》catfile($oldname,$newname) 这是用 File::Spec 的类, 即制了个匿名的对像, 然後调用其方法.
c. use Path::Class; 首先宣告要使用 Path::Class 这个类
my $dir=dir( qw(Users fred lib)); 从 Path::Class 这个类中呼叫 dir() 这个方法构造了 $dir 这个对像
my $subdir=$dir-》subdir(’perl 5’); 再从 $dir 这个对像中, 调用 subdir() 这个 object method, 最後将结果回传至 $subdir
Perl 里面很多模块都同时提供 oo style 和 function style 两种介面, 要怎麼用, 就只看你觉得怎样写得舒服. 当然你也得看清楚模块的说明, 应该怎麼用和甚麼时机用. 但还是那一句, 只要是合乎 “引用“ 的基础, 那就行了.
perl语言正则表达式如何在多行中匹配请举例
可以用join 如
open FILE, $filename
or die “Can’t open ‘$filename’: $!”;
my $lines = join ’’, 《FILE》;
$lines =~ s/^/$filename: /gm;
或者用循环
open(A,“file“);
while(《A》){
if(/aaa/../bbb/){
print;
}
}
上面脚本是只打印出aaa到bbb之间的行.
open(A,“file“);
while(《A》){
unless(/aaa/../bbb/){
print;
}
}
上面脚本是打印出aaa到bbb之外的行.
菜鸟求助:关于perl多进程
多进程or多线程?可以看一下http://www.cnblogs.com/eavn/archive/2010/08/28/1811381.html
perl fork多进程程序实例讲解perl的多进程程序开发,可以参考:
http://www.cnblogs.com/luoxiake/articles/2682605.html
当Perl里面要触发另一个Perl时,如果不希望等待,可以用threads创建线程;
use threads;
my $t1 = threads-》create(\&t1, “param1“, “param2“ );
my $t2 = threads-》create(\&t2, “param1“, “param2“ );
$t1-》join;
$t2-》join;
如下ibm网站上面的中文教程写得比较易懂,可以学习一下:
https://www.ibm.com/developerworks/cn/linux/l-cn-perl-thread/
如果可以看懂英文,也可以在装了perl电脑的命令行中输入perldoc perlthrtut查看官方教程,或者perl官网:http://perldoc.perl.org/perlthrtut.html
求生物信息学相关的 应用Perl 语言的 简单案例
这是我刚开始学习perl的时候写的一个应用bioperl做本地blast的脚本,希望有点帮助
#!/usr/bin/perl -w
use strict;
use Bio::SearchIO;
use Bio::Tools::Run::StandAloneBlast;
my $filein=shift;
open OUT,“》test.out“ or die “$!“;
my @para=(program=》’blastn’,database=》“hg18/chr1.fa“,expect=》1e-10);
my $blast=Bio::Tools::Run::StandAloneBlast-》new(@para);
my $str = Bio::SeqIO-》new(-file=》$filein,-format =》’fasta’);
while (my $input = $str-》next_seq())
{
my $id=$input-》display_id();
my $len=$input-》length();
my $report=$blast-》blastall($input);
#print “$report\n“;
while(my $result=$report-》next_result)
{
while(my $hit = $result-》next_hit)
{
while(my $hsp = $hit-》next_hsp)
{
next if($hsp-》percent_identity《85);
next if($hsp-》length(’total’)《300);
#next if($hsp-》hit-》strand eq $hsp-》query-》strand);
print OUT $id,“\t“,$hit-》name,“\t“,$hsp-》length(’total’),“\t“,$hsp-》hit-》strand,“/“,$hsp-》query-》strand,“\t“,$hsp-》hit-》start,“\t“,$hsp-》hit-》end,“\t“,$hsp-》query-》start,“\t“,$hsp-》query-》end,“\t“,$hsp-》percent_identity,“\t“,$hsp-》evalue,“\n“;
}
}
}
}
close OUT;
如何使用Perl语言在windows下编写图形化窗口程序啊,求大师,最好给个例子瞅瞅
perl 的图形有两种玩法, Tk 和 Tkx. Tk 是纯 Perl 的, 但能用的 widget (即那些 button, menu, scrollbar... )比较少; Tkx 则需要你先装有 Tcl/Tk , 但能用的 widget 比较多. 一个最简单的例子就是
use Tk; # 导入 tk 模组
use strict;
my $mw = MainWindow-》new; # 创建窗口
my $labelObj = $mw-》Label(-text =》 ’Hello, world!’); # 创建一个 label 物件
$labelObj -》pack; # pack() 是将物件程现的方法, 你再翻翻书, 还有 grid() 和 place() 的风格
$mw-》Button(
-text =》 ’Quit’,
-command =》 sub { exit },
)-》pack;
MainLoop; # 每个 tk 程序都要等到呼叫 MainLoop 才会出现.
最後, 你还得知道一个(差不多)每个物件都会的方法, 叫 configure, 你会以此对物件进行重新定义, 或附加设定
如何利用perl命令行, 来执行正则表达式,寻找匹配的行
楼上的是找出其中之一呀,楼主要的是同时包含两个句子。
可以这样
perl -n -e ’print if ($_ =~/Barney/ && $_ =~ /Fred/)’ test.txt 》new.txt
其实这样的实现用awk命令这些很好用。楼主可以学习学习awk sed grep 等命令。
我补充个实例吧。
awk ’{if (/Barney/ && /Fred/) print }’ test.txt 》 new.txt
more test.txt | grep Barney | grep Fred 》new.txt (这个管道用着很有意思)
都测试了一下,可行
Perl 小骆驼书中下面的这个例子, 作用是怎样的foreach循环里匹配的是什么内容
perldoc -u -f atan2
是perldoc 命令行 ,可以得到 perl 中atan2 函数的说明
system 是在perl 中调用这个命令行,反引号也可以实现同样的功能
然后把得到的内容放到数组
然后 正则替换内容, \w 代表一个数字、字母或下划线
匹配 以一个\w 开头,被《》括起来的内容 ,后面的 $1 代表的是前面括号括起来的内容,\U 代表大写,g代表 全部替换;
就是 像 X《atan2》 会被替换为 ATAN2
更多文章:
jquery设置select选中(jquery怎么根据value来动态选中select下的option)
2024年7月13日 01:01
fished out(fish out的用法fish out是不是捕捞的意思每天捕捞鱼能用fish out这短语吗怎么用英文说)
2024年8月27日 17:05
nginx负载均衡数据库(nginx负载均衡怎么访问数据库)
2024年7月22日 02:34
用于字符串比较的库函数是(函数sstrcmp()的功能是对两个字符串进行比较)
2024年7月24日 07:56
teamviewer(teamviewer和teamviewer host有什么区别求指教)
2024年7月23日 09:33
简述for与foreach语句的区别(for in,for of, for,forEach,map的区别)
2024年7月12日 09:57
nginx停止和启动命令(重启nginx服务器用哪个指令比较好)
2024年6月13日 12:58
部署图显示代码本身的结构(用图形画出一个web程序部署在tomcat的基本目录结构)
2024年3月15日 05:50
conservative party(conservative什么意思)
2024年5月3日 09:53
java中相等怎么表示(java怎么比较两个字符串是否相等)
2024年6月15日 03:08
setinterval越来越快(setinterval速度重叠)
2024年7月16日 17:48
数控css和rpm什么意思(数控车床操作键盘上26个字母,分别是什么意思啊)
2024年7月23日 12:25
json格式化工具有哪些(有哪些方法可以将JSON格式的数据集转化为EXCEL格式)
2024年7月18日 04:18