use strict; use warnings; my $fn="abc/def.xyz"; $fn =~ s/($<=[.])[^.]*$/txt/; print "$fn\n";