Le regex tipizzate in modo esplicito sono consentite come chiavi nel dump di Perl YAML?
Domanda
Ciò si riferisce a una domanda precedente: Come posso leggere Strutture dati Perl da Python? . Potrebbe essere un bug nella versione del parser YAML con cui sto lavorando (0.66), ma quando eseguo:
perl -MYAML -le 'do shift; print YAML::Dump( $CPAN::Config )' simple.pl
Sul seguente simple.pl
:
%config = (
'color' => 'red',
'numbers' => [5, 8],
qr/^spam/ => qr/eggs$/,
);
Ottengo:
---
(?-xism:^spam): !!perl/regexp (?-xism:eggs$)
color: red
numbers:
- 5
- 8
Nota che la chiave regex non ha il tipo esplicito. Cosa dà? (Grazie!)
Soluzione
Da man perldata
:
Gli hash sono raccolte non ordinate di valori scalari indicizzati dalla chiave stringa associata .
Le chiavi non hanno un tipo nel dump YAML perché non hanno un tipo in Perl. Sono solo stringhe. Nel tuo caso la stringa (?-xism:^spam)
Prova questo:
perl -l -e '% config = (qr / ^ spam / = > qr / eggs $ /); print $ config {" (? - xism: ^ spam) "} '
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow