Perl ed il modulo Term::ReadLine

Vi siete mai chiesti come implementare un prompt dei comandi per le vostre applicazioni? Perl vi fornisce un modulo perfetto allo scopo, che in poche righe di codice (12 nel caso del nostro esempio) vi permette di configurare un terminale con tanto di storico dei comandi inseriti.
Buttiamoci subito nell’ analisi del codice:

##############Config########################
 my $PROMPTSTRING = '%PSH% >>>';
 my $PROMPTNAME = 'term';
 ##############Main########################
 use Term::ReadLine;
 my $term = new Term::ReadLine $PROMPTNAME;
 my $out = $term->OUT || \*STDOUT;
 while (defined($_ = $term->readline($PROMPTSTRING))) {
  my $result = eval($_);
  warn $@ if $@;
  chop($result);
  print $result, "\n" unless $@;
  $term->addhistory($_) if /\s/;
}

Le prime due istruzioni, impostano il messaggio che visualizzeremo nel prompt ed il nome del terminale, mentre la terza include il modulo perl che fornisce tutte le subroutines necessarie (si trova facilmente il deb nei repository Debian), non c’è bisogno che vi ricordi che senza quel modulo non funziona una mazza vero?.

Dopo l’inclusione del modulo inizia la parte interessante:
Creiamo l’oggetto Term::ReadLine ed impostiamo come output, la variabile $out, che conterrà l’output del prompt stesso e quello emesso dallo standard output.

Il ciclo while tiene vivo il terminale, salvando il comando immesso dall’utente nella variabile $_; quindi ad ogni ciclo, viene valutata la stringa $_ come se fosse una istruzione perl e viene eseguita come sottoprogramma (tutto questo grazie alla funzione eval() ).
Infine visualizziamo l’output oppure gli eventuali messaggi di errore per poi aggiungere il nostro comando alla history.

Per maggiori informazioni vi rimando a:

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...