Надоело руками менять кодировки для нормального вывода русского текста в своих perl-скриптах в зависимости от кодировки терминала (запускаю скрипты под Linux (utf8), Windows (ActivePerl, cp866) и Windows (Cygwin, cp1251)). Немного погуглил, но никаких готовых рецептов не встретил, хороший запрос для поиска что-то в голову не пришёл.
Решил поступить следующим образом — определять операционную систему, в которой запущен скрипт, и в зависимости от этого выставлять кодировку выходного потока (STDOUT):
#!/usr/bin/perl;
use utf8;
require encoding;
import encoding ('utf8', 'STDOUT' => &SetEncoding);
sub SetEncoding {
if ($^O =~ /^MSWin\d{2}$/i) {
return 'cp866';
}
elsif ($^O =~ /^cygwin$/i) {
return 'cp1251';
}
elsif ( условие для следующей ОС (например - linux) ) {
return 'utf8';
}
# и так далее, исходя из личных потребностей
}
Замечания, исправления, дополнения и/или другие способы решения задачи по автоматической установке кодировки для perl-скрипта всегда приветствуются!
И на всякий случай, если вдруг мне не удастся найти время написать ещё что-то в блог до нового года — поздравляю всех своих читателей с наступающим новым годом, успехов вам и побольше приятных открытий! 🙂
PS: А для интересующихся фрилансом — новый, но достаточно любопытный ресурс ФрилансFM — портал о фрилансе.