use strict; use warnings; my $string = 'asdfasdfasdfasdfasdfasdfasdfasdf'; $string =~ s|((?:(?!).)*)|''.&item($1).''|egs; print $string; sub item { my ($item) = @_; my $no =1; $item =~ s//''/egs; return $item; } output: ------- asdfasdfasdfasdfasdfasdfasdfasdf #### $string =~ s|((?:(?!).)*)|my $item = $1; my $no = 1; $item =~ s//''/egs;"$item"|egs;