【发布时间】:2015-01-09 01:43:36
【问题描述】:
@t = qw(a b c d e + g h + j k m n l + h +);
@q = qw(a b c d e f g h i j k l m l j h h);
@s = qw(a b c d e f g h k j k l m l j h h);
foreach (0..$#q){
if($t[$_] eq ($q[$_] && $s[$_])){
print "$t[$_]";
}
print "$t[$_]-$t[$_]\n";
elsif($t[$_] eq '+' && $q[$_] eq $s[$_]){
print"$t[$_]";
}
else{
print "\n";
}
}
预期输出:
abcde+gh [1-8]
jk [10-11]
l+h+ [14-17]
此处@t 基于匹配@q 和@s,并打印同样基于@t 的区间。
我无法获得不匹配的间隔。请给我一个好的解决方案
【问题讨论】:
-
“f”如何匹配“+”?
-
@q和@s' both have a same elements that possible match "+" in@t. If it is mismatched both@q` 和@s未打印,用于计算间隔。 -
语法错误:
elsifwithoutif.. -
我得到了左侧输出。我的问题是不能采取右侧间隔。
-
您上次的编辑引入了语法错误。此外,第一个 if 分支的条件可能不符合您的要求。它比较
$t[$_] with$q[$_]`如果$q[$_]有一个假值,否则它比较$s[$_]。
标签: perl