PDA

Visualizza la versione completa : Capire una istruzione


paolot
13-06-2004, 16:51
Ciao a tutti,
chi e' cosi' gentile da spiegarmi cosa fa questa istruzione ?

$temp =~ s/^([^ ]*)\.([^ ]*)\.([^ ]*)\.([^ ]*)/$1/;

Grazie a tutti
Paolo

Mich_
14-06-2004, 10:06
Quella e` una regular expression (RE).
Nel manuale di Perl c'e` un file apposito per le RE, e sono potentissime.
Il bello e` che sono molto simili in tutti i linguaggi.

$temp =~ s/^([^ ]*)\.([^ ]*)\.([^ ]*)\.([^ ]*)/$1/;

s/.../.../ --> sostituisce l'espressione scritta nel primo pezzo con quella del secondo.

[^ ] --> qualsiasi carattere escluso lo spazio
([...]*) --> zero o piu` ripetizioni, salva il risultato
\. --> il carattere punto
^ --> all'inizio: la stringa deve inziare li`
$1 --> il contenuto della prima parentesi nella RE


In totale sembrerebbe che dovrebbe sostituire a tutto il contentuto della stringa, la parte prima del punto.
Ma nella stringa ci devono essere almeno tre caratteri punto (attaccati o separati da altri caratteri, spazi esclusi)

Dovrebbe essere equivalente a:
$temp =~ s/^([^ ]*)\.[^ ]*\.[^ ]*\.[^ ]*/$1/;
salvo che in questo caso non vengono salvati gli altri pezzi. In Perl i pezzi della RE tra parentesi tonde sono disponibili anche dopo, fino alla prossima RE.

paolot
14-06-2004, 21:28
Capito.
Infatti, provandolo, ho capito che mi ritorna il primo numero di un numero ip :)

thanx

Loading