Perl/Funzioni Native sulle variabili: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nuova pagina: {{perl}} Il linguaggio mette a disposizione diverse funzioni per le operazioni base. Alcune di queste sono state già menzionate (es. print) per consentire di poter fare delle piccole...
 
Riga 8:
 
==Informative/ricerca/estrazione==
'''length''' Ritorna il numero di byte (caratteri) presenti nella stringa.
length - return the number of bytes in a string
 
index - find a substring within a string
Sintassi
# length EXPR
 
Esempio d'uso
<source lang="perl">
my $a = 'questa è una stringa di caratteri 36';
print '$a è lunga: '.( length $a )."\n";
print '$a è lunga: '.length($a)."\n";
my $b = 1;
print '$b è lungo: '.( length $b )."\n";
print '$b è lungo: '.length($b)."\n";
</source>
che produrrà :
 
$a è lunga: 36
$a è lunga: 36
$b è lungo: 1
$b è lungo: 1
 
'''NOTA:''' length è relativa alle SOLE stringhe. (se si vuole il numero di un array usare @<nome> in ambito scalare o $#<nome> vedi Array)
 
'''index''' Trova la prima ricorrenza di una stringa all'interno di un'altra stringa 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
<source lang="perl">
my $a = 'questa è una stringa di caratteri 36';
#cerco "una" in $a
my $p_una = index $a , "una";
print '"una" si trova alla posizione '.$p_una.' in $a'."\n";
my $una = 'una';
my $p_una = index( $a , $una );
print '"una" si trova alla posizione '.$p_una.' in $a'."\n";
#cerco "t" in $a
my $b = index $a , "t";
print '"t" si trova alla posizione '.$b.' in $a'."\n";
my $b = index( $a , "t" );
print '"t" si trova alla posizione '.$b.' in $a'."\n";
#cerco "mela" in $a
my $b = index $a , "mela";
print '"mela" si trova alla posizione '.$b.' in $a'."\n"; # NON SI TROVA !
 
#cerco "t" dopo la posizione di "una" in $a
my $c = index $a , "t" , $p_una;
print '"t" dopo "una" si trova alla posizione '.$c.' in $a'."\n";
my $c = index( $a , "t" , $p_una );
print '"t" dopo "una" si trova alla posizione '.$c.' in $a'."\n";
 
</source>
che produrrà :
 
"una" si trova alla posizione 9 in $a
"una" si trova alla posizione 9 in $a
"t" si trova alla posizione 4 in $a
"t" si trova alla posizione 4 in $a
"mela" si trova alla posizione -1 in $a
"t" dopo "una" si trova alla posizione 14 in $a
"t" dopo "una" si trova alla posizione 14 in $a
 
Vediamo ora un modo di cercare ogni SUB presente in una stringa usando index:
<source lang="perl">
my $a = 'questa è una stringa di caratteri 36';
print "cerco 't' in '$a'\n";
#cerco "t" in $a
my $p = 0;
while ( ($p = index $a , "t" , $p ) != -1 )
{
print "trovata 't' alla posizione $p \n";
$p++;
}
</source>
 
che produrrà :
 
cerco 't' in 'questa è una stringa di caratteri 36'
trovata 't' alla posizione 4
trovata 't' alla posizione 14
trovata 't' alla posizione 28
trovata 't' alla posizione 29
 
index - find a substring within a string
rindex - right-to-left substring search
substr - get or alter a portion of a stirng
reverse - flip a string or a list
 
 
==Su un carattere==