note
lodin
<p>I don't quite understand the question. A regexp cannot change the string, it can only extract portions of the string.</p>
<p>If you mean an substutation and you can evaluate the substitution part (but why would you then be limited to evaluate inside a <c>s///</c>?), you can use the following simple technique.
<code>
s/(.*)/substr $1 . '0' x 13, 0, 13/se
</code>
</p>
<p>You just create a new string with all the zeros you could possibly need at the end, and then take the chars from the beginning.
<code>
my @codes = (
'12345678',
'1234567890123',
'1234567890123456',
);
my $len = 13;
for my $var (@codes) {
my $fixed = substr $var . '0' x $len, 0, $len;
print "$fixed\n";
}
__END__
1234567800000
1234567890123
1234567890123
</code>
</p>
<p><i>lodin</i></p>
700840
700840