s/\[\[(\w+)\]\]/$helper->($1)/eg; #### panic: sv_pos_b2u: bad byte offset at [...]. #### s/\[\[(\w+)\]\]/@{[$helper->($1)]}/g; #### while (m/\[\[(\w+)\]\]/) { my $foo = $helper->($1); s/\[\[(\w+)\]\]/$foo/; }