my @bytes = unpack("U*",$input); my $i=0; while(scalar(@bytes)>0) { my $byt=1; $byt=2 if ($bytes[$i] >= 192); $byt=3 if ($bytes[$i] >= 224); $byt=4 if ($bytes[$i] >= 240); $byt=5 if ($bytes[$i] >= 248); print "$bytes[$i]: "; my @spl = splice(@bytes,0,$byt); my $letter = pack("U*",@spl); print $letter." [0x"; foreach (@spl){printf "%2.2X",$_;} print "] "; print "\n"; }