use warnings; use strict; use Test::More; sub subst { my $x = shift; $x =~ s/\d+[^_:]*\K_/:/; return $x; } is subst("V12345_name_test"), "V12345:name_test"; is subst("V12345:name_test"), "V12345:name_test"; is subst("V12345x_name_test"), "V12345x:name_test"; is subst("V12345x:name_test"), "V12345x:name_test"; # ... more test cases needed here! done_testing;