Это проблема не системы, а самого perl
.
-CIO
устанавливает только кодировку UTF-8 для STDIN
и STDOUT
, два из трех perl
предопределенный дескриптор файла (у вас есть - E
для STDERR
).
Когда вы используете:
perl -CIO -pe 's/.*(..)$/$1/' file
perl
, используйте ромбовидный оператор
для обработки файла. Поскольку, когда ромбовидный оператор
использовал open (с формой с двумя аргументами) для создания нового дескриптора для каждого файла из командной строки, этот дескриптор файла не будет зависеть от кодировки UTF-8. вы устанавливаете STDIN
и STDOUT
.
Итак, вы можете передать содержимое файла на perl
через его стандартный ввод, и он будет работать:
perl -CIO -pe 's/.*(..)$/$1/'
Другие параметры см. В @ Ответ Мэтта .
Если вы хотите, чтобы perl
использовал вашу локаль для уровня кодирования по умолчанию, вы можете использовать:
perl -Mopen=:locale -pe 's/.*(..)$/$1/' file
Когда вы используете PERLIO
для настройки уровня кодирования, вы должны используйте : encoding (uf8)
вместо : utf8
.
Использование : utf8
пропускает этап кодирования и может вызвать проблемы при чтении недопустимых последовательностей байтов UTF-8 и привести к проблемам безопасности.
¿La computadora portátil tiene un interruptor de apagado físico de RF -? Por lo general, dicho interruptor deshabilitaría los transmisores WiFi y bluetooth al "desconectarlos" virtualmente.