我编写了一个代码,如果它与特定模式匹配,我可以从数组中的一个元素中减去一个特定值(例如:FP = 0.021)。这是代码:
if ($info =~ /FP=/) {
my @array1 = split(';', $info);
if ($array1[$#array1] =~ /=([^.]*)/){
my $name1= $-[1];
$FPvalue = substr($array1[$#array1], $name1);
if ($FPvalue < 0.0001){
push(@FPvalues,$FPvalue);
其中$ info是一个字符串,其中包含以分号(;)分隔的信息。
我很幸运,&#34; FP = 0.021&#34; element是我的数组中的最后一个元素。但我想知道一种不使用表达式减去它的方法:$ array1 [$#array1]
感谢您的帮助,谢谢!
答案 0 :(得分:1)
这里你如何解析字符串末尾的字符串中的十进制数:
$str = "asdsa;adsasd;adsasd;FP=0.021";
if($str =~ /=(\d+\.?\d+)$/){
print $1;
}
答案 1 :(得分:1)
没有样本输入数据很难分辨,但我认为你想要
push @FPvalues, $1 if $info =~ /FP=([\d.]+)/
它的工作原理是在$info
中搜索字符串FP=
后面跟着一些点和十进制数字。如果找到该模式,则将点和数字部分放入$1
并推送到数组上。