-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