in reply to Regex not behaving as expected

Your solution looks very close to a common trick I use, which is to assign a vairable to another variable, then do a regex search and replace on the new one:

my $file = 'file013.txt'; (my $sk = $file) =~ s/^.*?(\d+).*$/$1/;

Which for the sake of this problem is a very similar solution to what others are proposing, the above method is much more useful when I want to keep most of the string rather than a portion of it.

Example, I want to emphasise the word keep above:

my $boring_string = '...when I want to keep most of the string...'; (my $exciting_string = $boring_string) =~ s/(keep)/<b>$1</b>/;