Perl范围字符串ID

时间:2012-03-02 15:02:51

标签: string perl range

所以我有一个文档中页面的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+)$/;

然后从那里创建循环。

1 个答案:

答案 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";
}