2011-01-05 10 views

risposta

12

Questo è il offical FAQ answer meno eventuali modifiche successive.

Per cancellare lo schermo, è sufficiente stampare la sequenza speciale che indica al terminale di cancellare lo schermo. Una volta ottenuta questa sequenza, stamparla quando si desidera cancellare lo schermo.

È possibile utilizzare il modulo Term::ANSIScreen per ottenere la sequenza speciale. Importare la funzione cls (o il tag :screen):

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

print $clear_screen; 

Il modulo Term::Cap può anche ottenere la sequenza speciale se si vuole affrontare con i dettagli di basso livello di controllo del terminale. Il metodo Tputs restituisce la stringa per la capacità di data:

use Term::Cap; 

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

print $clear_screen; 

In Windows, è possibile utilizzare il modulo Win32::Console. Dopo aver creato un oggetto per l'uscita filehandle che si desidera modificare, chiamare il metodo Cls:

Win32::Console; 

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

print $clear_screen; 

Se si dispone di un programma a riga di comando che fa il lavoro, si può chiamare in apici inversi per catturare qualsiasi cosa uscite in modo è possibile utilizzare in un secondo momento:

$clear_string = `clear`; 

print $clear_string; 
+0

è stato salvato il meglio per ultimo! Catturare l'output della riga di comando "clear" per il consumo ripetuto più tardi è un grande trucco, e ha fatto il trucco. – dmansfield

+0

C'è un piccolo bug nella risposta. La variabile '$ clear_string' ottiene il valore, ma quando si stampa la variabile con un nome leggermente diverso viene usato' $ clear_screen'. – bessarabov

3

utenti Linux utilizzare il seguente comando:

system 'clear'; 
6

I più brevi moduli aggiuntivi OS-indipendente (e non necessitano di installazione Metodo ni), che ha lavorato per me è stato trovato nel Perl Monks thread (che pagina contiene anche alcune altre varianti di cancellazione dello schermo):

system $^O eq 'MSWin32' ? 'cls' : 'clear'; 
+0

Questo ha funzionato alla grande per me! (OSX) –

Problemi correlati