A quick try:
in reply to loop execution
See perlre. The regex should be executed each time in the loop BTW. Are you sure that not all the text is in one item for some reason? Try the g modifier after your regex, see if that cures it.
my $string = join \000, @code;
$string =~ s!("\w+")!<b>$1</b>!g;
@newcode = split /\000/, $string;
I also changed the regex a bit. See 7 Stages of Regex Users and Death to Dot Star!. Depending on the complexity of your input, you might be better of with Parse::RecDescent or siblings.
"We are not alone"(FZ)