Programmazione  »  Guide  »  Guida Perl 

operatori



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.

Ultimi articoli Programmazione

Windows 8 Store, un posto in prima fila

La pre-certificazione che permetterà di avere le nostre applicazioni...

La concorrenza con C++11, async e la libreria Threading

La libreria Threading e i principali costrutti per sfruttare il...

Visual Studio 11 beta, le novità

Le caratteristiche più interessanti introdotte nella beta di Visual...

Windows 8, WinRT API e applicazioni Metro Style

Come creare una semplicissima interazione in stile Metro con C++...

C++11, la libreria standard

Le funzioni sugli insiemi e i contenitori mutuati dalle estensioni...

Altri articoli

Guide Programmazione

Azure, una nuvola tanti linguaggi

Entrare con semplicità ed efficacia nel mondo di Windows Azure e...

Guida Antipattern

Come evitare le cattive abitudini, le worst practices e le trappole...

RESTful Web Services - La Guida

Dai principi ispiratori del Web programmabile e delle architetture...

Altre guide

Newsletter @Programmazione

Ogni settimana, direttamente nella tua e-mail: articoli, script e guide su Java, Visual Basic, VB.Net ed i più diffusi linguaggi di programmazione.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto