perldoc perlre
dice questo:Parentesi graffa sinistra deprecata in Perl regex - esattamente quando?
(Se una parentesi graffa si verifica in qualsiasi altro contesto e non fa parte di una sequenza backslash come
\x{...}
, viene trattato come un normale carattere Tuttavia, un avvertimento deprecazione è. sollevato per tutte queste occorrenze di , e in Perl v5.26, gli usi letterali di una parentesi graffa saranno obbligati a fuggire, ad esempio precedendoli con una barra rovesciata ("\{"
) o racchiudendoli tra parentesi quadre ("[{]"
). modifica consentirà future estensioni di sintassi (come la modifica del livello basso er legato di un quantificatore opzionale), e una migliore controllo degli errori di quantificatori.)
OK, quindi il seguente stampa il messaggio deprecazione.
perl -lE 'm/x{x}/'
Perché non segue?
perl -lE 'm/x({x})/'
ad es. nel gruppo di cattura è il {
consentito senza caratteri di escape? Probabilmente non perché
perl -lE 'm/x(x{x})/'
stampa anche l'avviso.
Quindi, qual è l'esatta "logica"?
P.S .: Sfuggirò ad ogni letterale {
, ma mi sto chiedendo quale sia la logica alla base di quanto sopra.
Mi sembra che dovrebbe mettere in guardia anche. – ikegami