ausdrücklich Regexes wird als Schlüssel in Perl YAML-Dump erlaubt getippt?
Frage
Dies bezieht sich auf eine frühere Anfrage: Wie kann ich lesen Perl-Datenstrukturen von Python? . Es könnte ein Fehler in der Version des YAML-Parsers sein, dass ich mit (0,66) bin zu arbeiten, aber wenn ich laufe:
perl -MYAML -le 'do shift; print YAML::Dump( $CPAN::Config )' simple.pl
Am folgenden simple.pl
:
%config = (
'color' => 'red',
'numbers' => [5, 8],
qr/^spam/ => qr/eggs$/,
);
ich:
---
(?-xism:^spam): !!perl/regexp (?-xism:eggs$)
color: red
numbers:
- 5
- 8
Beachten Sie, dass der Schlüssel regex nicht den expliziten Typ hat. Was gibt? (Danke!)
Lösung
Von man perldata
:
Hashes sind ungeordnete Sammlungen von skalaren Werten indiziert durch ihren zugehörigen string key .
Die Tasten haben keinen Typ in der YAML-Dump, weil sie nicht auf einen Typ in Perl haben. Sie sind nur Strings. In der String (?-xism:^spam)
case
Versuchen Sie folgendes:
perl -l -e'%config = ( qr/^spam/ => qr/eggs$/); print $config{"(?-xism:^spam)"}'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow