是否允许显式类型的正则表达式作为Perl YAML转储中的键?

时间:2009-01-06 07:55:29

标签: regex perl yaml dump

这与前一个问题有关:How can I read Perl data structures from 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 个答案:

答案 0 :(得分:4)

来自man perldata

  

哈希是由关联的字符串键索引的标量值的无序集合。

密钥在YAML转储中没有类型,因为它们在Perl中没有类型。它们只是字符串。在你的情况下,字符串(?-xism:^spam)

试试这个: perl -l -e'%config = ( qr/^spam/ => qr/eggs$/); print $config{"(?-xism:^spam)"}'