$ perl -e ' use 5.010; use strict; use warnings; my $av_tmp_LINE = "Jun 3 23:20:05 f42252s5 postfix/pickup[204714]: E1E63A045C: uid=33 from="; say "BEFORE: $av_tmp_LINE"; $av_tmp_LINE =~ s/([&<>])/char_to_entity($1)/eg; say "AFTER: $av_tmp_LINE"; my $av_tmp_STRING = "Logfile: " . "" . q{$av_obj_TMP->{input}} . "" . " " . $av_tmp_LINE; say "\$av_tmp_STRING[$av_tmp_STRING]"; sub char_to_entity { my ($char) = @_; state $entity_for = {qw{& & < < > >}}; return $entity_for->{$char}; } ' BEFORE: Jun 3 23:20:05 f42252s5 postfix/pickup[204714]: E1E63A045C: uid=33 from= AFTER: Jun 3 23:20:05 f42252s5 postfix/pickup[204714]: E1E63A045C: uid=33 from=<www-data> $av_tmp_STRING[Logfile: $av_obj_TMP->{input} Jun 3 23:20:05 f42252s5 postfix/pickup[204714]: E1E63A045C: uid=33 from=<www-data>]