my $re = qr/$this->{mask_start}\Q$key\E(.*?)$this->{mask_end}(.*?)$this->{mask_start_close}\Q$key\E$this->{mask_end_close}/is; while ($this->{template} =~ /$re/) { my $params = $this->mask_block_params($1, $2); my $html = &$callback($key, $params); $this->{template} = $` . $html . $'; }