Per citare perlop:
Se, tuttavia, la variabile è stata utilizzato solo in contesti di stringa dal it è stato impostato e ha un valore che non è la stringa vuota e corrisponde al modello /^[a-zA-Z]*[0-9]*\z/
, l'incremento viene eseguito come una stringa, preservando ciascun carattere nel suo intervallo , con carry.
Gli intervalli sono 0-9, A-Z e a-z. Quando è necessario un nuovo personaggio, viene preso dal raggio del primo carattere. Ogni intervallo è indipendente; i caratteri non escono mai dalla gamma iniziale.
9z
non corrisponde al modello, quindi ottiene un incremento numerico. (Probabilmente dovrebbe dare un avviso "Argomento non numerico", ma non in Perl 5.10.1.) Le cifre sono consentite solo dopo tutte le lettere (se presenti), mai prima di loro.
Si noti che questa corda in cifre fa corrispondono al modello, e fa ricevono un incremento di stringa (se non è mai stato utilizzato in un contesto numerico). Tuttavia, il risultato di un incremento di stringa su una stringa di questo tipo è identico a un incremento numerico, tranne per il fatto che ha una precisione infinita e gli zero iniziali (se presenti) vengono preservati. (In questo modo è possibile distinguere solo quando il numero di cifre supera quello che una IV o NV può memorizzare, oppure ha zero iniziali.)
Non vedo perché si pensa che Zz
diventi Aa
(a meno che non si stia pensando all'aritmetica modulare, ma non lo è). Diventa AAa
attraverso questo processo:
- Incremento
z
avvolge intorno al a
. Incrementa il personaggio precedente.
- L'incremento
Z
si estende attorno a A
. Non esiste un carattere precedente, quindi aggiungi il primo da questo intervallo, che è un altro A
.
Il range operator (..
), quando somministrati due stringhe (e quello sinistro corrisponde al modello), utilizza l'incremento stringa per produrre un elenco (questo è spiegato in prossimità dell'estremità di quella sezione). L'elenco inizia con l'operando di sinistra, che viene quindi incrementato fino:
- Il valore è uguale operando a destra, o
- la lunghezza del valore supera la lunghezza dell'operando destro .
Restituisce un elenco di tutti i valori. (Se il telaio 2 terminato l'elenco, il valore finale non è incluso in esso.)
Sembra che nel contesto di autoincremento, 9z, 9a, 9b o 9zzz123, ecc. Siano uguali. Il materiale non numerico finale viene scartato in silenzio. – Mike
Si tratta di caratteri incrementali.Non sta cercando di capire quale schema tu voglia. Ne parlo un po 'nella nuova edizione del libro di esercizi per studenti Learning Perl che ho quasi finito. :) –
Esiste un nome per questo formato di "numerazione" utilizzando lettere, qualcuno lo sa? – AmbroseChapel