Le regex tipizzate in modo esplicito sono consentite come chiavi nel dump di Perl YAML?

StackOverflow https://stackoverflow.com/questions/415762

  •  03-07-2019
  •  | 
  •  

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!)

È stato utile?

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
scroll top