2008-10-13 11 views

Répondre

14

Le CPAN est probablement la meilleure solution. Jetez un oeil à Term::Screen:Uni:

require Term::Screen::Uni; 
my $scr = new Term::Screen::Uni; 

$scr->clrscr() 
6

Si vous parlez d'un terminal, je voudrais utiliser quelque chose comme le curses pour le faire.

Il y a un module Curses agréable d'y accéder, que vous pouvez utiliser comme ceci:

perl -MCurses -e '$win=new Curses;$win->clear()' 
9

J'utilise généralement Term::ANSIScreen de CPAN qui me donne toutes sortes de fonctions liées à la console-utiles.

use Term::ANSIScreen qw(cls); 
cls(); 
22
print "\033[2J"; #clear the screen 
print "\033[0;0H"; #jump to 0,0 
+0

+1000 à ce gars, cette méthode ne nécessite pas l'utilisateur d'installer un module cpan (et tout ce que cela implique) – almosnow

+9

Ne nécessite pas une installation, ne fonctionne pas sur certaines plates-formes. – gparent

7

De la réponse de perlfaq8 à How do I clear the screen:


Pour effacer l'écran, il vous suffit d'imprimer la séquence spéciale qui indique le terminal pour effacer l'écran. Une fois que vous avez cette séquence, affichez-la lorsque vous voulez effacer l'écran.

Vous pouvez utiliser le module Term :: ANSIScreen pour obtenir la séquence spéciale. Importez la fonction cls (ou la balise écran):

use Term::ANSIScreen qw(cls); 
my $clear_screen = cls(); 

print $clear_screen; 

Le module Term :: Cap peut également obtenir la séquence spéciale si vous voulez traiter les détails de bas niveau de contrôle terminal. La méthode tputs retourne la chaîne pour la capacité donnée:

use Term::Cap; 

$terminal = Term::Cap->Tgetent({ OSPEED => 9600 }); 
$clear_string = $terminal->Tputs('cl'); 

print $clear_screen; 

Sous Windows, vous pouvez utiliser le module Win32 :: Console. Après avoir créé un objet pour la sortie filehandle que vous voulez affecter, appelez la méthode Cls:

use Win32::Console; 

$OUT = Win32::Console->new(STD_OUTPUT_HANDLE); 
$OUT->Cls; 

Si vous avez un programme de ligne de commande qui fait le travail, vous pouvez l'appeler en contre-apostrophes pour capturer tout ce qu'il génère afin vous pouvez l'utiliser plus tard:

$clear_string = `clear`; 

print $clear_string; 
+0

'Win32 :: Console :: Cls' ne retourne pas une valeur que vous pouvez sauvegarder. –

+0

Comment changeriez-vous la réponse dans perlfaq pour en tenir compte? –

+0

J'ai fait une modification à cette réponse. –

6

sous OS X et Linux, vous pouvez utiliser la commande Perl suivante:

system("clear"); 

Je ne sais pas ce que l'équivalent est un der Windows.

Modifier: Windows équivalent est:

system("cls"); 
+0

super, 10x .... –

Questions connexes