所以我有一个文档中页面的ID范围,我需要循环来比较值。我的问题是ID是字符串而不是数字所以当我尝试用Perl循环范围时它不起作用。这是我的范围循环的一个例子,以及我的数据的一个例子。
foreach($begID..$endID){
print $_;
}
数据示例是
$begID = ABC-ABC-00001;
$endID = ABC-ABC-00100;
我的问题是我无法循环这些值。我知道我可以根据“ - ”分割数据并得到00001和00100值,但问题是数据可能因我正在使用的不同文件而异。
有没有其他人可以建议去做这件事?
更新
直到我可以发布我自己的答案(在另外7个小时内因为不到100名代表),这是我想出的:
好的,这就是我作为解决方案所做的。我可以从结尾开始重新编号,直到它击中一个字母字符。
($start) = $begID =~ m/(\d+)$/;
($end) = $endID =~ m/(\d+)$/;
然后从那里创建循环。
答案 0 :(得分:3)
“数据可以变化”如何?
如果有一个固定的字符串前缀+数字,你可以拆分前缀:
my ($prefix, $start) = ($begID =~ /^(\D+)(\d+)$/;
my ($prefix2, $end) = ($endID =~ /^(\D+)(\d+)$/;
die "Prefixes don't match" unless prefix eq $prefix2;
foreach my $index ($start .. $end) {
my $id = "prefix$index";
}