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的假象;