هل يُسمح بالتعبيرات المنطقية المكتوبة بشكل صريح كمفاتيح في تفريغ Perl YAML؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

وهذا مرتبط بسؤال سابق: كيف يمكنني قراءة هياكل بيانات بيرل من بايثون؟.يمكن أن يكون خطأ في إصدار محلل 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