http://qs321.pair.com?node_id=700845


in reply to How to convert a string with regex to a string with a fixed length?

I don't quite understand the question. A regexp cannot change the string, it can only extract portions of the string.

If you mean an substutation and you can evaluate the substitution part (but why would you then be limited to evaluate inside a s///?), you can use the following simple technique.

s/(.*)/substr $1 . '0' x 13, 0, 13/se

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.

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

lodin