¿Se permiten expresiones regulares explícitas como claves en el volcado YAML de Perl?
Pregunta
Esto se relaciona con una pregunta anterior: ¿Cómo puedo leer? ¿Estructuras de datos Perl de Python? . Podría ser un error en la versión del analizador YAML con el que estoy trabajando (0.66), pero cuando ejecuto:
perl -MYAML -le 'do shift; print YAML::Dump( $CPAN::Config )' simple.pl
En el siguiente simple.pl
:
%config = (
'color' => 'red',
'numbers' => [5, 8],
qr/^spam/ => qr/eggs$/,
);
me sale:
---
(?-xism:^spam): !!perl/regexp (?-xism:eggs$)
color: red
numbers:
- 5
- 8
Tenga en cuenta que la expresión regular clave no tiene el tipo explícito. ¿Lo que da? (¡Gracias!)
Solución
De man perldata
:
Los hashes son colecciones desordenadas de valores escalares indexados por su clave de cadena asociada .
Las claves no tienen un tipo en el volcado de YAML porque no tienen un tipo en Perl. Son solo cuerdas. En su caso, la cadena (?-xism:^spam)
Prueba esto:
perl -l -e '% config = (qr / ^ spam / = > qr / eggs $ /); print $ config {" (? - xism: ^ spam) "} '