是否允许显式键入的正则表达式作为 Perl YAML 转储中的键?
这与之前的问题有关: How can I read Perl data Structures来自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
请注意,关键正则表达式不没有明确的类型。 是什么赋予了? (谢谢!)
This relates to a previous question: How can I read Perl data structures from Python?. It could be a bug in the version of the YAML parser that I'm working with (0.66), but when I run:
perl -MYAML -le 'do shift; print YAML::Dump( $CPAN::Config )' simple.pl
On the following simple.pl
:
%config = (
'color' => 'red',
'numbers' => [5, 8],
qr/^spam/ => qr/eggs$/,
);
I get:
---
(?-xism:^spam): !!perl/regexp (?-xism:eggs$)
color: red
numbers:
- 5
- 8
Note that the key regex doesn't have the explicit type. What gives? (Thanks!)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
来自man perldata:
这些键在 YAML 转储中没有类型,因为它们在 Perl 中没有类型。 它们只是字符串。 在您的情况下,字符串
(?-xism:^spam)
试试这个:
perl -l -e'%config = (qr/^spam/ => qr/eggs$/); 打印 $config{"(?-xism:^spam)"}'
From
man perldata
:The keys don't have a type in the YAML dump because they don't have a type in Perl. They are just strings. In you case the string
(?-xism:^spam)
Try this:
perl -l -e'%config = ( qr/^spam/ => qr/eggs$/); print $config{"(?-xism:^spam)"}'