-3
我有點noobish到perl編碼規範,能不能有人幫忙解釋一下:這些Perl變量是什麼意思?
- 爲什麼在Perl的變量的前
/
和/<
? \=
和=~
是什麼意思,有什麼區別?- 爲什麼代碼在
;
之前需要結束/
,例如,/start=\'([0-9]+)\'/
?
前3個子問題是由perldocs解決的,但下面的代碼是什麼意思?
push(@{$Start{$start}},$features);
據我所知,我們正在推進的$功能集成到一個數組@啓動,但什麼@$Start{$start}
是什麼意思?它是一樣的: @Start = ($start);
中的代碼有這樣的事情:
use FileHandle;
sub open_infile {
my $file = shift;
my $in = FileHandle->new($file,"<:encoding(UTF-8)")
or die "ERROR: cannot open $file: $!\n" if ($Opt_utf8);
$in = new FileHandle("$file")
or die "ERROR: cannot open $file: $!\n" if (!$Opt_utf8);
return $in;
}
$uamf = shift @ARGV;
$uamin = open_infile($uamf);
while (<$uamin>) {
chomp;
if(/<segment /){
/start=\'([0-9]+)\'/;
/end=\'([0-9]+)\'/;
/features=\'([^\']+)\'/;
$features =~ s/annotation;//;
push(@{$Start{$start}},$features);
push(@{$End{$end}},$features);
}
}
EDITED
所以後perl的文檔的一些精讀,這裏的有些事情我」 ve gotten
/<segment /
是一個正則表達式che ckswhile (<$uamin>)
的readline 是否包含以下字符串:<segment
。- 同樣的
/start=\'([0-9]+)\'/
無關做 實例的任何變量,這是一個正則表達式檢查,以查看該 的readline在while (<$uamin>)
是否包含start=\'([0-9]+)\'
這\'([0-9]+)\'
指的是數字字符串。 $features =~ s/annotation;//
=~
被使用,因爲字符串 替換是測試正則表達式匹配。見 What does =~ do in Perl?
我還沒有編輯代碼。你是否認爲第一行檢查inputtrng $ _是否包含字符「 segment」? –
alvas
2012-07-21 22:18:15
@ 2er0:錯字,對不起 – 2012-07-22 00:38:16