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

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

Обратите внимание, что регулярное выражение ключа не имеет явного типа. Что дает? (Спасибо!)

1 Ответ

4 голосов
/ 06 января 2009

С man perldata:

Хэши - это неупорядоченные наборы скалярных значений, проиндексированные по их ассоциированному строковому ключу .

Ключи не имеют типа в дампе YAML, потому что они не имеют типа в Perl. Они просто струны. В вашем случае строка (?-xism:^spam)

Попробуйте это: perl -l -e'%config = ( qr/^spam/ => qr/eggs$/); print $config{"(?-xism:^spam)"}'

...