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.