Как насчет немного магии Perl? Оператор ++
будет работать даже со строками, а 0000
волшебным образом превратится в 0001
.
Теперь мы не можем изменить $1
, поскольку он доступен только для чтения, но мы можем использовать промежуточную переменную.
use strict;
use warnings;
my $string = "xg0000";
$string =~ s/(\d+)/my $x=$1; ++$x/e;
Обновление:
Я не думал об этом раньше, но на самом деле это работает без регулярных выражений:
C:\perl>perl -we "$str = 'xg0000'; print ++$str;"
xg0001
Все еще не решает проблему, на которую указал DavidO, с 9999
. Вы должны решить, что делать с этими числами. У Perl есть довольно интересное решение:
C:\perl>perl -we "$str = 'xg9999'; print ++$str;"
xh0000