Как цвет вывода текста из Perl-скрипта в Windows?
Я хотел бы отформатировать текст, напечатанный на консоли, с помощью команды Perl print.
в моем случае скрипт будет работать только под командной строкой WinXP-DOS, но было бы здорово, если бы он был независимым от ОС, хотя я предпочел бы связать его с WinXP, чем загружать отдельный пакет.
4 ответов
для любого терминала, который поддерживает аварийные коды ANSI можно использовать термин:: пакет ANSIColor доступно на CPAN.
со страницы Википедии:
консольные окна в версиях Windows на основе NT (Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, Windows Vista и Windows Server 2008) не поддерживайте изначально ANSI Escape последовательности, хотя некоторая поддержка вероятный.
не знайте больше информации о Windows, чем это, я парень POSIX. :-)
С Win32::Консоли - вот пример
use Win32::Console;
my $CONSOLE = Win32::Console->new(STD_OUTPUT_HANDLE);
my $attr = $CONSOLE->Attr(); # Get current console colors
$CONSOLE->Attr($FG_YELLOW | $BG_GREEN); # Yellow text on green
print "This is a test\n";
$CONSOLE->Attr($attr); # Set console colors back to original
вот что сработало лучше всего для меня в конце концов:
1) установлен Win32:: Console:: ANSI (обратите внимание, что это не то же самое, что Win32::Console)
perl -MCPAN -e shell
cpan> install Win32::Console::ANSI
2) Если этот модуль загружен до Term::ANSIColor, вы можете использовать стандартный термин::ANSICOLOR API, и он действительно работает (я пробовал его с Windows 7).
use Win32::Console::ANSI;
use Term::ANSIColor;
print color("blue"), "blue\n", color("reset");
print "normal\n";
system("color A"); #DOS command, change text color to lime
system("color 7"); #DOS command, change text color to white
однако эти команды меняют цвет текста на всем экране. Типа " цвет ?"в окне DOS, чтобы увидеть параметры цвета
Я использую strawberry perl в Windows, и у меня не было пакета Win32::Console. Чтобы установить этот тип пакета в консоли:
оболочка perl-MCPAN-e
установить Win32:: Console
выход