Автоматичне визначення кодування терміналу в perl-скрипті

Набридло руками змінювати кодування для нормального виведення російського тексту в своїх 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 - портал про фрілансе

Ще на схожі теми:

Leave a Reply