Разрешены ли явно типизированные регулярные выражения в качестве ключей в дампе Perl YAML?
Вопрос
Это относится к предыдущему вопросу: Как я могу читать структуры данных Perl из Python?.Это может быть ошибка в версии парсера YAML, с которой я работаю (0.66), но когда я запускаю:
perl -MYAML -le 'do shift; print YAML::Dump( $CPAN::Config )' simple.pl
О следующем simple.pl
:
%config = (
'color' => 'red',
'numbers' => [5, 8],
qr/^spam/ => qr/eggs$/,
);
Я получил:
---
(?-xism:^spam): !!perl/regexp (?-xism:eggs$)
color: red
numbers:
- 5
- 8
Обратите внимание, что ключевое регулярное выражение не имеет явного типа.Что дает?(Спасибо!)
Решение
От man perldata
:
Хэши — это неупорядоченные коллекции скалярных значений, индексированные по связанным с ними значениям. строковый ключ.
У ключей нет типа в дампе YAML, потому что у них нет типа в Perl.Это просто струны.В вашем случае строка (?-xism:^spam)
Попробуй это:perl -l -e'%config = ( qr/^spam/ => qr/eggs$/); print $config{"(?-xism:^spam)"}'
Не связан с StackOverflow