Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Кириллический Hello world на perl(win)


Автор: Ivan0x32 24.5.2010, 22:47
Нет ли у кого валидного, работающего примера подобной программы? Мне страх как нужно во первых выводить на консоль кириллические данные.
Пользуюсь Notepad2, он вроде как использует по дефолту ANSI кодировку для файлов, может быть из за этого скрипты выдают кракозябры? Хотя я пробовал и так: 
Код

#! /usr/bin/perl
use locale;
use POSIX qw (locale_h);
setlocale(LC_CTYPE, 'ru_RU.ANSI');
print "Привет Мир!";

Но все тоже самое. Перекодировал файл в CP1251(и только после этого написал последнюю строку скрипта, т.е. Привет, Мир! был введен в уже новой кодировке - не ANSI) и все тоже самое, только кракозябры другие стали... 

PS: Интерпретатор  - Strawberry Perl, хотя это вряд ли меняет дело.  

Автор: ginnie 25.5.2010, 11:42
У меня работает так:

Код

#! /usr/bin/perl
use strict;
use warnings;
use encoding 'cp1251', STDOUT => 'cp866';
print "Привет Мир!";

Автор: ramus 25.5.2010, 21:50
Еще можно консоль виндовс (cmd.exe) перевести в кодировку виндовс ;)

Я использую для этого батник (кодировка русских букв WIN1251) с встроенным перл кодом (позаимствовал у ActivePerl)

Код

@rem = '--*-Perl-*--
@echo off
chcp 1251>nul
if "%OS%" == "Windows_NT" goto WinNT
perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
:WinNT
perl -x -S %0 %*
if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
if %errorlevel% == 9009 echo You do not have Perl in your PATH.
if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul
goto endofperl
@rem ';
#!/usr/local/bin/perl -w
#line 15


use warnings;
use strict;

print "Привет\n";

__END__
:endofperl


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)