$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;