Разрешены ли явно типизированные регулярные выражения в качестве ключей в дампе Perl YAML?

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

  •  03-07-2019
  •  | 
  •  

Вопрос

Это относится к предыдущему вопросу: Как я могу читать структуры данных 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)"}'

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top