Вы используете UNIX систему, не понятно, какой терминал и какие настройки для LOCALE у вас в вашей среде.
В зависимости от настроек LOCALE не все символы будут печататься на консоли, и вместо этого вы увидите ? . Некоторые символы не предназначены для печати вообще (управляющие символы, которые нельзя визуализировать).
У вас есть два варианта:
- настроить параметры LOCALE в соответствии с используемыми символами
- перекодировать ввод и вывод в поддерживаемый LOCALE
Также ваш код, вероятно, будет легче прочитать в следующей форме
use strict;
use warnings;
use feature 'say';
my $debug = 0;
while (<DATA>) {
chomp;
say if $debug;
map{ my $d = ord; print "[$d]" } split '';
say '' if $debug;;
}
__DATA__
use strict;
use warnings;
use feature 'say';
while (<>) {
say;
map{ my $d = ord; print "[$d]" if $d >= 128 } split '', $_;
}