Perl范围字符串ID



因此,我有一个文档中页面的ID范围,需要循环以比较值。我的问题是ID是字符串而不是数字,所以当我尝试用Perl循环范围时,它不起作用。这是我的范围循环的一个例子,也是我的数据的一个示例。

foreach($begID..$endID){
   print $_;
}

就是一个数据示例

 $begID = ABC-ABC-00001; 
 $endID = ABC-ABC-00100;

我的问题是我不能循环这些值。我知道我可以根据"-"分割数据,得到00001和00100的值,但问题是,我使用的不同文件的数据可能会有所不同。

有人可以建议采取其他方式吗?

更新

在我可以发布我自己的答案之前(由于代表人数不足100,再过7个小时),以下是我的想法:

好吧,这就是我所做的解决方案。我可以用正则表达式从末尾开始计算数字,直到它达到一个阿尔法字符。

($start) = $begID =~ m/(d+)$/;
($end) = $endID =~ m/(d+)$/;

然后从那里创建循环。

"数据可以变化"如何?

如果有一个固定的字符串前缀+数字,你可以拆分前缀:

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

最新更新