Как цвет вывода текста из 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

выход