# Perl/Funzioni Native su scalari

Perl
Copertina Bibliografia Tutti i moduli · Sviluppo
    CopertinaPerl/Copertina
* IntroduzionePerl/Introduzione
* C'è Perl?Perl/C'è Perl?
* Primo programma: Ciao Mondo!Perl/Primo programma: Ciao Mondo!
** Primo programma in un filePerl/Primo programma in un file
* VariabiliPerl/Variabili
** Variabili scalariPerl/Variabili scalari
** Variabili vettoriPerl/Variabili vettori
** Variabili hashPerl/Variabili hash
* IstruzioniPerl/Istruzioni
** Istruzioni minimePerl/Istruzioni minime
** Istruzioni compostePerl/Istruzioni composte
** Istruzioni racchiuse o bloccoPerl/Istruzioni racchiuse o blocco
** Istruzioni etichettaPerl/Istruzioni etichetta
** Istruzioni particolari su blocchi o etichettePerl/Istruzioni particolari su blocchi o etichette
** Istruzioni decisionaliPerl/Istruzioni decisionali
** CicliPerl/Cicli
* Applicare la teoriaPerl/Applicare la teoria
* FunzioniPerl/Funzioni
* Funzioni Native sulle variabiliPerl/Funzioni Native sulle variabili
** Funzioni Native su scalariPerl/Funzioni Native su scalari
** Funzioni Native su vettoriPerl/Funzioni Native su vettori
** Funzioni Native su hashPerl/Funzioni Native su hash
* FilePerl/File
* Espressioni regolariPerl/Espressioni regolari
** Espressioni regolari (oltre)Perl/Espressioni regolari (oltre)
** Espressioni regolari (contesto)Perl/Espressioni regolari (contesto)
Modifica il sommario

# Funzioni Native su scalari
## Informative/ricerca/estrazione
### length

length Ritorna il numero di byte (caratteri) presenti nella stringa.
Sintassi
* length EXPR
Esempio d'uso
che produrrà :
NOTA: length è relativa alle SOLE stringhe. (se si vuole il numero di un array usare @<nome> in ambito scalare o $#<nome> vedi Array)

### index

index Trova la prima ricorrenza di una stringa (SUBSTR) all'interno di un'altra stringa (STR) ritornandone la posizione.
NOTA non vengono usate le regular expression pertanto è un confronto fra semplici stringhe.
Sintassi
* index STR,SUBSTR,POSITION
* index STR,SUBSTR
NOTA Se si indica una POSITION la ricerca parte al carattere indicato. Questo può essere comodo per cercare una ricorrenza successiva senza alterare la stringa originale. Da notare che occorrerà incrementare di uno il valore ritornato dalla funzione index per poter cercare l'elemento successivo. POSITION è utile solo fra i valori 0 e length(STR)-1 (il carattere prima della fine della stringa). Valori al di fuori di questi valori saranno ignorati. Se la index non trova un valore torna -1.
Esempio d'uso
che produrrà :
Vediamo ora un modo di cercare ogni SUB presente in una stringa usando index:
che produrrà :

### rindex

rindex Trova l'ultima ricorrenza di una stringa (SUBSTR) all'interno di un'altra stringa (STR) ritornandone la posizione.
NOTA1 fa lo stesso tipo di ricerca di index ma a partire dal fondo.
NOTA2 non vengono usate le regular expression pertanto è un confronto fra semplici stringhe.
Sintassi
* rindex STR,SUBSTR,POSITION
* rindex STR,SUBSTR
NOTA Se si indica una POSITION la ricerca parte al carattere indicato. Questo può essere comodo per cercare una ricorrenza precedente senza alterare la stringa originale. Da notare che occorrerà decrementare di uno il valore ritornato dalla funzione rindex per poter cercare l'elemento successivo. POSITION è utile solo fra i valori 0 e length(STR)-1 (il carattere prima della fine della stringa). Valori al di fuori di questi valori saranno ignorati. Se la rindex non trova un valore torna -1.
Esempio d'uso
che produrrà :
Vediamo ora un modo di cercare ogni SUB presente in una stringa usando index:
che produrrà:

### substr

substr Estrae (e sostituisce[REPLACEMENT]) una porzione di stringa(EXPR) in base alla posizione(OFFSET) della lunghezza passata(LENGTH).
NOTA: attenzione che substr può essere usato anche a sinistra di un assegnamento !.
Sintassi
* substr EXPR,OFFSET
* substr EXPR,OFFSET,LENGTH
* substr EXPR,OFFSET,LENGTH,REPLACEMENT
Esempio d'uso
NOTA: $da_20_a_34 contiene 15 caratteri , $da_20_a_23 contiene 4 caratteri , 'Smith' è più lungo di TonT
che produrrà:
NOTA: $c è il valore di substr ( $a , 20 , 4 ) dopo che è stato assegnato substr ( $a , 20 , 4 ) = 'Smith' ecco perché manca la 'h'

### reverse

scalar reverse inverte i caratteri di una stringa (leggere la NOTA).
NOTA: reverse funziona in modo lista, ma in contesto scalare (forzato con 'scalar') inverte le stringhe
Sintassi
* scalar reverse EXPR
Esempio d'uso
che produce:
NOTA: se alla print si togliesse scalar, reverse lavorerebbe in modo lista e quindi non invertirebbe la stringa

## Su un carattere
### chomp

toglie (se c'è) l'ultimo "ritorno a capo" da una stringa.
NOTA: Quando si sono fatti i primi esempi in fondo alla stringhe usate si è sempre messo il carattere speciale "\n" . Questo carattere consente, quando si fanno successive print, che le nuove stringhe da scrivere inizino "a capo" e non continuino sulla stessa riga.
Vediamone un'applicazione:
che produce il seguente output

### chop

Toglie l'ultimo carattere di una stringa modificandola.
Vediamo questo esempio:
che produce il seguente output

### chr

questa funzione converte un numero in un carattere, in base alla codifica ASCII. Ogni carattere che vediamo sullo schermo (ma anche quelli che non vediamo come i ritorni a capo ed altri ) ha un numero (codice) corrispondente. Questi numeri vengono "inviati allo schermo" e vengono convertiti nei simboli (caratteri) che vediamo sullo schermo. Per ovvie ragioni di comodità i simboli che rappresentano i numeri sono contigui (dal 30h al 39h) ed anche le lettere alfabetiche (dal 41h al 5Ah, maiuscole, 71h al 7Ah, minuscole).
che produce

## Conversione
### crypt

crypt cripta un testo (PLAINTEXT) e lo ritorna criptato. il parametro SALT influisce sulla codifica.
Non esiste modo di avere il testo decriptato.
Per sapere se una "password" è corretta si confronta la parte criptata.
NOTA: la stringa ritornata da crypt dipende dal sistema operativo
Sintassi
* crypt PLAINTEXT,SALT
Esempi

### hex

hex converte una stringa ( che rappresenta un numero esadecimale ) in un numero
Sintassi
* hex EXPR
* hex
NOTA: senza parametri viene utilizzata la variabile implicita $_
Esempi
NOTA:per la sola stampa/conversione si vedano anche sprintf, printf, unpack

### oct

oct converte una stringa ( che rappresenta un numero in ottale ) in un numero
Sintassi
* oct EXPR
* oct
NOTA:Senza parametri utilizza la variabile implicita $_
Esempi
NOTA:per la sola stampa/conversione si vedano anche sprintf , printf , unpack

### ord

ord converte il primo carattere di EXPR nella sua rappresentazione numerica (ASCII,EBDIC,Unicode 8Bit)
Sintassi
* ord EXPR
Esempi

## Maiuscole/Minuscole
### lc

lc ritorna una stringa con tutti i caratteri minuscoli
Sintassi:
* lc EXPR
Esempio

### lcfirst

lcfirst ritorna una stringa con la sola prima lettera minuscola
Sintassi:
* lcfirst EXPR
Esempio

### uc

uc ritorna una stringa con tutti i catatteri maiuscoli
Sintassi:
* uc EXPR
Esempio

### ucfirst

ucfirst ritorna una stringa con la sola prima lettera maiuscola
Sintassi:
* ucfirst EXPR
Esempio

## Particolari
### pack

pack converte la lista in una rappresentazione binaria in base a TEMPLATE
Sintassi:
* pack TEMPLATE,LIST
Per maggiori dettagli vedi la documentazione su www.perl.it

### sprintf

sprintf ritorna una stringa con le formattazioni richieste
Sintassi:
* sprintf FORMAT, LIST
Per maggiori dettagli vedere la documentazione su www.perl.it

### tr///

tr/// - sostituisce i caratteri di una stringa. Al posto di SEARCHLIST mette quelli corrispondenti alla stessa posizione in REPLACEMENTLIST
Sintassi:
* tr/SEARCHLIST/REPLACEMENTLIST/cds
NOTA: per le opzioni "c" ,"d" ,"s" vedere la documentazione su www.perl.it
NOTA$^1$ uguale a y///

### y///

y/// - sostituisce i caratteri di una stringa
Sintassi:
* y/SEARCHLIST/REPLACEMENTLIST/cds
NOTA uguale a tr///