São explicitamente digitado expressões regulares autorizados como chaves em Perl YAML despejo?

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

  •  03-07-2019
  •  | 
  •  

Pergunta

Trata-se de uma pergunta anterior: Como posso ler estruturas de dados Perl de Python? . Poderia ser um bug na versão do analisador YAML que eu estou trabalhando com (0,66), mas quando eu corro:

perl -MYAML -le 'do shift; print YAML::Dump( $CPAN::Config )' simple.pl

Na seguinte simple.pl:

%config = (
    'color' => 'red',
    'numbers' => [5, 8],
    qr/^spam/ => qr/eggs$/,
);

eu recebo:

---
(?-xism:^spam): !!perl/regexp (?-xism:eggs$)
color: red
numbers:
  - 5
  - 8

Note que a regex chave não tem o tipo explícito. O que da? (Obrigado!)

Foi útil?

Solução

De man perldata:

Hashes são coleções desordenadas de valores escalares indexados pelo seu associado chave corda .

As chaves não têm um tipo no despejo YAML, porque eles não têm um tipo em Perl. Eles são apenas strings. No seu caso o (?-xism:^spam) corda

Tente isto: perl -l -e'%config = ( qr/^spam/ => qr/eggs$/); print $config{"(?-xism:^spam)"}'

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top