São explicitamente digitado expressões regulares autorizados como chaves em Perl YAML despejo?
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!)
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