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

发布于 2024-07-11 01:12:18 字数 639 浏览 8 评论 0原文

这与之前的问题有关: 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南城追梦 2024-07-18 01:12:18

来自man perldata:

哈希是标量值的无序集合,通过其关联的字符串键进行索引。

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

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

From man perldata:

Hashes are unordered collections of scalar values indexed by their associated string key.

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)"}'

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文