Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

operatori

Panoramica sugli operatori presenti nel Perl
Panoramica sugli operatori presenti nel Perl
Link copiato negli appunti

Abbiamo visto che il perl utilizza i normali operatori matematici utilizzati per i numeri: + per l'addizione, - per la sottrazione, * per la moltiplicazione, / per la divisione.
Inoltre, == è utilizzato per l'uguaglianza, e ritorna "vero" o "falso" a seconda che i numeri siano uguali o meno. L'opposto è != .

Come ci si aspetta, < è il simbolo di minore e > quello di maggiore, <= è il simbolo di minore o uguale e => quello di maggiore o uguale.

Utilizzare questi simboli con operatori non matematici, produrrà, se lo script è chiamato con l'opzione -w, un warning.

Ci sono anche operatori che operano a livello di stringa:

.
(si', proprio il punto) esegue la concatenazione

eq
controlla che le stringhe siano uguali

ne
è l'opposto di eq

3 == 3
è vero

3 == "03"
è vero

"bla" eq "arr"
è falso

"bla" ne "arr"
è vero

"bla".3
è equivalente a "bla"."3", che restituisce "bla3"

"bla eek!"
è lo stesso di $bla."eek!"

Ci sono poi gli operatori logici: && (AND), || (OR), ! (NOT). && e || vanno tra due espressioni, mentre ! va all'inizio dell'espressione (poichè la nega)

3 == "03" && "bla"ne "arr"
è vera

Questa espressione funziona perchè == e ne hanno una precedenza più alta rispetto a &&, ma la stessa espressione avrebbe potuto essere scritta più chiaramente come:

(3 == 03) && ("bla" ne "arr")

!("eek" eq $bla)
è lo stesso di ("eek" ne $bla)

Una particolarità degli operatori && e || è che possono essere utilizzati come scorciatoie per "se è verificata la condizione fai questo".

unlink "dumbfile" || die "Couldn't remove filen";

In questo modo prima viene valutato unlink() e, se questo ha successo, la condizione introdotta da || viene ignorata, altrimenti (in caso di insuccesso) tale condizione viene eseguita.
L'operatore =~ è particolare: questo guarda che 2 pattern siano uguali e li sostituisce. La sintassi è:

valore =~ /pattern/;
Controlla se le variabili sono uguali

valore !~ /pattern/
Forma corta per !($variabile=~/pattern/;). Controlla che non siano uguali

$variabile =~ s/pattern/replacement/;
Cerca il pattern nella variabile, e la sostituisce con replacement

Se la variabile è omessa, =~ e !~ agiscono su $_
Nella prima forma, senza la s/ , =~ e !~ non modificano gli argomenti, ma testano solo se combaciano. Nella seconda forma, il pattern "replacement" è sostituito a pattern se questo viene trovato.

Ancora, alcuni modificatori possono essere aggiunti prima del ; per specificare come i pattern devono combaciare:

i - case-insensitive
g - match globale. Controlla e restituisce anche più di un valore

I pattern sono espressioni regolari abbastanza simili a quelle di grep. Questo verrà spiegato in seguito.

"bla" =~ /bl/;
vero perchè bla contiene bl

"blabla" =~ /bl/;
idem

"blabla" =~ /bl/g;
trova 2 matches

"bla" !~ /c/i;
vero

$var = "blabla";

$var =~ s/bl/QQ/;
vero, e cambia $var in "QQahbla"

$var =~ s/BL/qq/ig;
vero, e $var diventa "qqahqqah"

L'operatore = assegna il secondo elemento al primo. Ci sono delle scorciatoie per utilizzare questo operatore.

$var += $value:
aggiunge $value a $var

$var -= $value;
sottrae $value da $var

$var *= $value;
moltiplica $var per $value

$var /= $value;
divide $var per $value

Queste espressioni sono invece utilizzate per incrementare il valore delle variabili:

$counter += $step;

$var ++
aggiunge 1 a $var

++$var
valuta $var+1

Tutti questi operatori (tranne =~) ed il matching dei pattern si applicano anche in C, in maniera quasi identica.

Ti consigliamo anche