Indice

Capitolo 3.
Quotatura ed operatori






   1. Quotatura

Per quotatura si intende l'inclusione di informazioni all'interno di simboli per privare uno o più caratteri del loro significato speciali. L'esempio più immediato è l'inclusione di una stringa di testo contenente spazi dentro ad un paio di virgolette, come in "Stringa con caratteri di spazio". Perl offre comunque una serie di possibili opzioni per privare un numero più o meno esteso di caratteri dei loro significati particolari e per limitare l'utilizzo della quotatura singola attraverso il backslash (\).

     Vediamo alcuni esempi di quotatura:


Esempi di quotatura Fig. 1
 
    1:  #!/usr/bin/perl
    2: 
    3:  #
    4:  # Quotatura semplice [ interpola ]
    5:  #
    6:  $scalar = "12";
    7:  $string = "\$scalar = $scalar"; # Vale -->$scalar = 12<--
    8: 
    9:  #
   10:  # Quotatura totale [ non interpola ]
   11:  #
   12:  $scalar = '12';
   13:  $string = '\$scalar = $scalar'; # Vale -->\$scalar = $scalar<--
 


Esiste inoltre un sistema parallelo di quoting che consente un più semplice (per quanto inusuale) commento dei caratteri:


Quote (forma generale e particolare) Tabella 1
Particolare Generale Significato Interpolazione
       
'' q// Letterale No
"" qq// Letterale Si
`` qx// Comando Si
() qw// Lista di parole No
// m// Pattern Match Si
s/// s/// Sostituzione Si
y/// tr/// "Traduzione" No

Questo sistema consente di avvalersi dei benefici della quotatura senza dover abusare del backslash (\). Il carattere utilizzato come delimitatore può essere scelto a seconda di quale risulti più comodo a seconda della composizione del testo che si sta quotando. Facciamo un esempio. <FONT FACE="Arial,Helvetica">Prova</FONT> Questo pezzo di sorgente HTML contiene alcuni caratteri "scomodi" da quotare come le virgolette. Quindi è scomodo da quotare con le virgolette. Lo slash in </FONT> inoltre consiglierebbe di non usare la forma qq// per quotare ma di scegliere un carattere delimitatore differente. Con HTML in generale risulta molto conveniente il carattere pipe (|). Vediamo le possibili quotature:


Esempi comparati di quotatura Fig. 2
 
    1:  #!/usr/bin/perl
    2: 
    3:  #
    4:  # Quotiamo la stringa <FONT FACE="Arial">Prova</FONT>
    5:  #
    6: 
    7:  #
    8:  # Quotiamo con le virgolette
    9:  #
   10:  $string = "<FONT FACE=\"Arial\">Prova</FONT>;
   11: 
   12:  #
   13:  # Sconveniente! Abbiamo dovuto commentare 2 caratteri con un \
   14:  # Proviamo con la forma generale: qq//
   15:  #
   16:  $string = qq/<FONT FACE="Arial">Prova<\/FONT>/;
   17: 
   18:  #
   19:  # Meglio! Ma abbiamo ancora uno slash commentato
   20:  # Cambiamo delimitatore:
   21:  #
   22:  $string = qq|<FONT FACE="Arial">Prova</FONT>|;
 




   
2. Aritmetici

Iniziiamo con gli operatori più immediati: gli operatori aritmetici.


Operatori aritmetici Tabella 2
+ somma
- sottrazione
* moltiplicazione
/ divisione
% modulo
** elevamento a potenza




   
3. Stringhe



Operatori su stringa di testo Tabella 3
. concatenazione
x ripetizione



Esempi con le stringhe Fig. 3
 
    1:  #!/usr/bin/perl
    2: 
    3:  #
    4:  # Concatenazione
    5:  #
    6:  $string = "Ciao" . " " . 'Mondo';
    7:  print $string . qq/\n/;
    8: 
    9:  #
   10:  # Ripetizione
   11:  #
   12:  $length = 10;
   13:  $string = "*" x $length;
   14:  print $string . "\n"; # Stamperà "**********\n"
 




   
4. Logici e comparativi



Operatori logici Tabella 4
Bassa priorità Alta priorità Nome Risultato
$a && $b $a and $b And $a se $a è falso, altrimenti $b
$a || $b $a or $b Or $a se $a è vero, altrimenti $b
!$a not $a Not la negazione di $a
$a ^ $b $a xor $b Xor quella delle due vera, oppure nessuno se entrambe
      sono vere o false



Operatori di comparazione Tabella 5
Numeri Stringhe Significato
> gt Maggiore di
>= ge Maggiore o uguale a
< lt Minore di
<= le Minore o uguale a
     
== eq Uguale a
!= ne Disuguale
<=> cmp Comparazione con risultato segnato

L'ultimo operatore richiede un commento particolare. Il risultato ritornato varia fra -1, 0 e 1. I tre numeri indicano (per così dire) quale dei tre simboli componenti l'operatore è vero. Diciamo che stiamo testando $a <=> $b; avremo questa possibile casistica:


L'operatore <=> Tabella 6
$a < $b     -1
$a = $b     0
$a > $b     1




   
5. File



Gli operatori su file Tabella 7
-r leggibile
-w scrivibile
-x eseguibile
-o dell'utente
   
-e esistente
-z grande zero byte (caratteri)
-s grande più di zero byte (caratteri)
   
-f un file normale
-d una directory
-l un link
-S un socket
-b block file
-c character file
-t aperto su una tty
   
-u SUID bit impostato
-g GUID bit impostato
   
-T file di testo
-B file binario





Inizio Capitolo Indice