substr ESPR,SCOSTAMENTO
Estrae una sottostringa da ESPR e la restituisce. Il primo carattere è a scostamento
0, oppure la qualsivoglia impostazione data a $[ (ma non è consigliabile farlo).
Se SCOSTAMENTO è un numero negativo (o più precisamente, minore di $[), viene
contato dalla fine della stringa. Se LUNGHEZZA viene omesso, restituisce tutto ciò che
rimane fino alla fine della stringa. Se LUNGHEZZA è un numero negativo, rimuove il
numero specificato di caratteri dalla fine della stringa.
Potete usare la funzione substr() come valore assegnabile, nel qual caso ESPR
deve essere a sua volta un valore assegnabile. Se assegnate qualcosa di più
corto di LUNGHEZZA, la stringa viene ridotta, mentre se assegnate qualcosa di più lungo
di LUNGHEZZA, la stringa viene allungata per fargli posto. Per mantenere la stringa della
stessa lunghezza, potrebbe essere necessario riempire lo spazio che avanza o eliminare i
valori in eccesso utilizzando sprintf.
Se SCOSTAMENTO e LUNGHEZZA specificano una sottostringa che è parzialmente al di fuori
della stringa, solo la parte dentro la stringa viene restituita. Se la sottostringa è
oltre entrambi gli estremi della stringa, substr() restituisce il valore indefinito e produce
un avvertimento. Quando viene utilizzata come valore assegnabile, specificare una sottostringa
interamente al di fuori della stringa è un errore bloccante. Di seguito un esempio che
mostra il comportamento per i casi limite:
my $nome = 'fred';
substr($nome, 4) = 'dy'; # $nome contiene ora 'freddy'
my $nulla = substr $nome, 6, 2; # restituisce '' (senza warning)
my $oops = substr $nome, 7; # restituisce undef, con warning
substr($nome, 7) = 'gap'; # errore bloccante
Un'alternativa all'utilizzo di substr() come valore assegnabile è quella di specificare
un valore da sostituire come quarto argomento. Questo permette di sostituire una parte di ESPR e
restituisce ciò che c'era in quella parte prima dell'operazione, proprio come fa
splice().