|
In molti casi può
essere utile passare dei parametri sulla linea di comando al nostro
script Perl. I parametri vengono immagazzinati automaticamente
nell'array @ARGV: come per ogni altro array $#ARGV
indica l'indice dell'ultimo elemento dell'array.
Supponiamo ad esempio
di voler scrivere una versione molto semplificata del comando grep
di UNIX. Ciò che vogliamo realizzare è uno script che stampi in
output le righe dei file di testo della directory corrente che
contengono la stringa passata come argomento al programma stesso.
Quella che segue è una delle possibili implementazioni di questo
programma:
|
#!/usr/local/bin/perl
# grep.pl: versione semplificata di grep
$ARGV[0] || die "Non e' stato specificata la stringa da
cercare\n\n";
@file = `ls -1`;
chop(@file);
foreach $file (@file) {
-T $file || next;
open(IN, "< $file") || next;
while ($r = <IN>) {
$r =~ /$ARGV[0]/ && print
"$file: $r";
}
close(IN);
}
|
L'esempio precedente
è sicuramente sovradimensionato per illustrare l'uso dell'array @ARGV,
ma può essere utile per richiamare vari concetti visti in precedenza.
Un altro dato che
spesso può risultare assai utile è costituito dalle variabili di
ambiente, ossia quelle variabili impostate a livello di shell che
possono essere utilizzate anche all'interno del programma Perl che le
"eredita". Le variabili di ambiente sono memorizzate
dall'interprete nell'array associativo %ENV; la chiave per
indicizzare gli elementi dell'array è il nome della variabile stessa.
Ad esempio la variabile $ENV{term} contiene il tipo di
terminale utilizzato dall'utente; la variabile $ENV{path}
contiene il path di ricerca delle applicazioni sul sistema
dell'utente. Chiaramente impostando un valore nell'array associativo %ENV
si imposterà una variabile d'ambiente ereditata anche dai processi
richiamati dallo script Perl.
Lezione
successiva =>
Torna
all'indice
|