Página 1 de 1

Equivalente a gotoxy en Perl pero para Windows

NotaPublicado: 2013-09-06 18:39 @818
por ManuelPerl
Hola, estoy buscando la equivalencia en Perl de la función de C gotoxy para posicionar texto en la consola. Por lo visto el Term::Cap o el screen no funcionan en Windows. La versión de Perl es la que viene con el IDE Padre 5.14.2. A ver qué módulo me podría valer.

Re: Equivalente a gotoxy en Perl pero para Windows

NotaPublicado: 2013-09-06 20:19 @888
por explorer
gotoxy() no es una función de C. Es una función que está definida en la biblioteca conio.h.

En otros tiempos, te diría que habría que cargar el controlador ANSI del Windows para que las consolas de texto se comportaran como las consolas de Unix/Linux. Pero eso dejó de funcionar a partir de Windows NT/2000/XP. Afortunadamente, en Perl, hay un módulo que imita el funcionamiento de una consola ANSI: Win32::Console::ANSI.

En cambio, hoy en día, para gestionar las consolas de Windows, se puede usar otro módulo: Win32::Console.

Re: Equivalente a gotoxy en Perl pero para Windows

NotaPublicado: 2013-09-06 21:40 @944
por ManuelPerl
explorer, he intentado instalar este módulo pero me dice que no puede instalarlo. Tengo el IDE Padre con versión de Perl 5.14.2. Me fui al cpan install Win32::Console::ANSI, y también puse force install Win32::Console::ANSI, pero al final me da error:

Can't locate Term/ANSIScreen.pm in @INC (@INC contains:
b D:/Dwimperl/perl/vendor/lib D:/Dwimperl/perl/lib .) a
BEGIN failed--compilation aborted at ansi.pl line 8.


#!/usr/bin/perl

use 5.010;
use strict;
use warnings;

use Win32::Console::ANSI;
use Term::ANSIScreen qw/:color :cursor :screen/;

locate 1, 1; print "@ This is (1,1)", savepos;
print locate(24,60), "@ This is (24,60)"; loadpos;
print down(2), clline, "@ This is (3,16)\n";
color 'black on white'; clline;
print "This line is black on white.\n";
print color 'reset'; print "This text is normal.\n";
print colored ("This text is bold blue.\n", 'bold blue');
print "This text is normal.\n";
print colored ['bold blue'], "This text is bold blue.\n";
print "This text is normal.\n";

Re: Equivalente a gotoxy en Perl pero para Windows

NotaPublicado: 2013-09-06 21:42 @946
por ManuelPerl
D:\Dwimperl\perl\bin>cpan Win32::Console::ANSI
CPAN: CPAN::SQLite loaded ok (v0.202)
Database was generated on Fri, 06 Sep 2013 23:23:15 GMT
CPAN: Module::CoreList loaded ok (v2.57)
Win32::Console::ANSI is up to date (1.05).

Re: Equivalente a gotoxy en Perl pero para Windows

NotaPublicado: 2013-09-07 07:05 @337
por explorer
No es

cpan install Win32::Console::ANSI

sino

cpan Win32::Console::ANSI

(sobra la palabra 'install'. Este es un fallo muy común).

El mensaje de error dice que es el módulo Term::ANSIScreen el que no está instalado.

Tendrás que hacer un

cpan Term::ANSIScreen

Re: Equivalente a gotoxy en Perl pero para Windows

NotaPublicado: 2013-09-07 07:24 @350
por ManuelPerl
Perfecto, solucionado. Efectivamente no estaba instalado el módulo Term::ANSIScreen, ya funciona perfectamente.
Queda cerrada esta pregunta.