1、~ /^\"(.*)\"\s+\<(\d+)-?(\d*)\>\s*$/ perl模式匹配
^\"以”开头,(.*)任意个字符,\"匹配”,\s+匹配一个以上的空白符,\<匹配一个<,(\d+)匹配一个以上的数字,-?匹配连字符-零次或一次,(\d*)匹配0或零个以上的数字,\>匹配>,\s*$/以0至0个以上的空白符结尾
2、一般来说,while循环中使用<STDIN>
或<>
读取输入后(也包括open关键字打开文件再读取行的情况),第一行就是去除行尾的换行符,所以大多数都采用如下通用格式:
while(<>){
chomp;
COMMANDS;
}
while(<STDIN>){
chomp;
COMMANDS;
}
3、chomp()
读取fasta文件,内容如下:
1 2 3 4 5 6 |
|
#!/usr/bin/perl
use warnings;
use strict;
my ($fasta) = @ARGV;
open FASTA, $fasta or die "Can't open $fasta";
local $/ = ">";
while (<FASTA>) {
s/\n//g;
print qq{$_\n};
}
close $fasta;
$/ = "\n";
运行这段代码,输出结果如下:
1 2 3 4 |
|
可以看出,$/的值出现在每行的最后;接下来使用chomp函数
#!/usr/bin/perl
use warnings;
use strict;
my ($fasta) = @ARGV;
open FASTA, $fasta or die "Can't open $fasta";
local $/ = ">";
while (<FASTA>) {
chomp;
s/\n//g;
print qq{$_\n};
}
close $fasta;
$/ = "\n";
输出结果为:
1 2 3 |
|
第一行因为是空行,这里没显示出来;可以看到每行末尾的>符号被去除了,所以chomp的真正作用是去除字符串末尾的$/,只是因为默认情况下,$/为\n,造成chomp就是去除\n的假象;