use re 'eval'; my $buffer = "\04perl\03awk\01C"; while ($buffer =~ /\G(.)((??{".{".ord($1)."}"}))/gs) { print ord($1),$2,"\n"; }