Perl Range String ID - PullRequest
       4

Perl Range String ID

2 голосов
/ 02 марта 2012

Итак, у меня есть диапазон идентификаторов для страниц в документе, которые мне нужно зациклить, чтобы сравнить значения. Моя проблема в том, что идентификаторы - это строки, а не числа, поэтому, когда я пытаюсь зациклить диапазон с помощью Perl, он не работает. Вот пример моего цикла диапазона и пример моих данных.

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

Примером данных будет

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

Моя проблема в том, что я не могу зациклить эти значения. Я знаю, что мог бы разделить данные на основе «-» и получить значения 00001 и 00100, но проблема в том, что данные могут различаться в разных файлах, с которыми я работаю.

Есть ли другой способ, которым кто-то мог бы предложить пойти по этому поводу?

UPDATE

До тех пор, пока я не смогу опубликовать свой собственный ответ (через 7 часов из-за того, что у меня менее 100 повторений), вот что я придумал:

Хорошо, вот что я сделал в качестве решения. Я могу вычленить числа, начиная с конца, до тех пор, пока он не достигнет альфа-символа.

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

Затем создайте цикл оттуда.

1 Ответ

3 голосов
/ 02 марта 2012

«данные могут отличаться» как?

Если, имея фиксированный префикс строки + число, вы можете отделить префикс:

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";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...