$string = "johnq.smith1"; $string =~ /(\d+$)/ or die "no number"; $1++; print $string, $/; # WRONG
####
$string = "johnq.smith1"; $string =~ /(\d+$)/ or die "no number"; match($string, 1)++; print $string, $/;
sub match : lvalue { my $n = $_[1] || 0; substr $_[0], $-[$n], $+[$n] - $-[$n]; }
####
{ package Matched; sub TIEARRAY { bless \my$x, $_[0]; } sub FETCH { my $n = $_[1]; substr $_, $-[$n], $+[$n] - $-[$n]; } sub STORE { my $n = $_[1]; substr($_, $-[$n], $+[$n] - $-[$n]) = $_[2]; } tie @~, Matched::; }
local $\ = $/; $_ = "johnq.smith1"; /(\d+$)/ or die "no number"; $~[1]++; print;