my $word = 'layer'; my $new_word = join '', map { "[$_]" } split '', $word; # Or, if I want to be more explicit about the process: # my @raw_chars = split '', $word; # my @cooked_chars = map { "[$_]" } @raw_chars; # my $new_word = join '', @cooked_chars; #### $ perl -E '$word = "layer123 $-.% foo"; $new_word = join "", map { $_ =~ /[a-zA-Z]/ ? "[$_]" : $_ } split "", $word; say $new_word;' [l][a][y][e][r]123 0.% [f][o][o]