Risorse per webmaster

L A   C O M U N I T À   V I R T U A L E   I T A L I A N A   P E R   W E B   M A S T E R S

 
 
      Tecnologie
      HTML
      CSS
      DHTML
      FLASH
      ASP
      PHP
      JSP
      PERL
      XML
      SMIL
      WIRELESS
      PALMARI
      APACHE
      MYSQL
      PICOSQL
 
      Grafica
 
      Servizi
 
      Raccolte
 
      Recensioni
 
      Analisi
 
      Disclaimer

   Per tutti
 
  .: Magazine
  .: Editor
  .: Appunti
  .: Gratis
  .: Scripts
  .: Components
 
   Home page

Partner
Magazine di tecnologie
Magazine di viaggio e turismo
Magazine di musica e spettacoli
Negozio di Informatica
Basilicata turismo
Food e territori
Agenzia di comunicazione turistica e Digital PR

versione stampabile Mostra una versione adatta per la stampa  

Livello di difficoltà:Livello di difficoltà: alto  
Il Perl, acronimo di Pratical extraction and report language, è diventato tanto popolare in Rete perché è il linguaggio più utilizzato per la creazine di programmi Cgi residenti su server Http. Può essere sfruttato sia su Web servers Apache che Iis.
 

Pattern Matching

Guida a Perl
Con il termine pattern matching si intende l'operazione di verifica se una certa stringa o una sua sottostringa corrisponde ad un certo pattern, ossia se è costruita secondo un determinato schema.

In Perl l'operatore che consente di effettuare il pattern matching è indicato da ``m/espressione regolare/''; in effetti la lettera ``m'' (match) che precede la coppia di slash (``/'') può essere omessa.

Per verificare se la stringa contenuta nella variabile $a (o una sua sottostringa) corrisponde al pattern descritto da una certa espressione regolare si utilizzerà la seguente istruzione, che restituisce naturalmente il valore ``vero'' se il matching riesce e ``falso'' altrimenti:

$a = /espressione regolare/

Supponiamo quindi di voler leggere dal canale di input standard una stringa immessa dall'utente e di voler verificare se la stringa è strutturata in un certo modo (ad esempio un numero, seguito da uno spazio e quindi da una stringa qualsiasi); il programma potrebbe essere il seguente:

#!/usr/local/bin/perl print "Inserisci una stringa: ";
$a = <STDIN>;
if ($a =~ /^\d+\s.+/) {
print "Ok, il formato della stringa e' corretto\n";
} else {
print "Il formato non e' quello desiderato\n";
}

Supponiamo ora di voler stampare tutte le righe di un certo file che contengono una stringa inserita dall'utente. Un possibile programma per la soluzione di questo semplice problema è il seguente:

#!/usr/local/bin/perl
print "Nome del file: ";
$file = <STDIN>;
chop($file);
-e $file || die "Il file non esiste!\n\n";
-T $file || die "Il file non e' un file di testo!\n\n";
print "Stringa da cercare: ";
$stringa = <STDIN>;
chop($stringa);
open (IN, "< $file") || die "impossibile aprire $file.\n\n";
while ($r = <IN>) {
$r =~ /$stringa/ && print $r;
}
close(IN);

Nell'effettuare il matching di una espressione è possibile tenere memoria di alcune componenti dell'espressione stessa. In un'espressione regolare, ogni termine racchiuso tra parentesi tonde verrà memorizzato e ci si potrà riferire ad esso all'interno della stessa espressione mediante la sequenza ``\n'', dove n è il numero progressivo del termine memorizzato.

Ad esempio la seguente espressione regolare ``descrive'' tutte le stringhe del tipo "x = x":

/^(.+)=\1$/

Infatti l'espressione indica che la stringa deve iniziare ("^") con una certa stringa non nulla ("(.+)") che viene memorizzata in "\1", quindi deve essere presente il simbolo di uguaglianza ("="), e deve terminare ("$") con una stringa identica alla precedente ("\1").

Nelle istruzioni successive ad un pattern matching ci si potrà riferire alle variabili "\n" mediante le variabili "speciali" $n.

 

 
 
Home > perl > ...   © 1999-2018 Risorse.net, tutti i diritti riservati