my $newstring = munge_string( 'one_two_three', '312' ); print $newstring; sub munge_string { $_ = $_[1]; split /[^a-zA-Z]+/, $_[0]; s/(\d)/$_[$1-1]/g; return $_; }