私はperlのコーディング規約に少し慣れていません.誰かが説明するのを手伝ってくれます:
- perl変数の前に ある
/
のはなぜですか?/<
- と は何
\=
を=~
意味し、違いは何ですか? - なぜコードの
/
前に;
末尾 が必要なの/start=\'([0-9]+)\'/
ですか?
最初の 3 つのサブ質問は実際には perldocs によって解決されましたが、コード内の次の行は何を意味するのでしょうか?
push(@{$Start{$start}},$features);
$features を @Start 配列にプッシュしていることは理解していますが、どういう@$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);
}
}
編集済み
だから、perl doc を集中的に読んだ後、ここに私が得たものがあります
- の
/<segment /
readline に次の文字列が含まれているかどうかをチェックする正規表現チェックですwhile (<$uamin>)
:<segment
. - 同様に、
/start=\'([0-9]+)\'/
変数のインスタンス化とは何の関係もありません。数値文字列 を 参照する readline がwhile (<$uamin>)
含まれているかどうかを確認するための正規表現チェックです。start=\'([0-9]+)\'
\'([0-9]+)\'
$features =~ s/annotation;//
文字列の=~
置換が正規表現の一致をテストしていたためです。=~ は Perl で何をするのですか?を参照 してください。