明示的に入力された正規表現は、Perl YAMLダンプのキーとして許可されていますか?
質問
これは前の質問に関連しています:読み方PythonのPerlデータ構造?。作業している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
から:
ハッシュは、関連する stringキーによってインデックス付けされたスカラー値の順序なしコレクションです。
キーには、Perlに型がないため、YAMLダンプに型がありません。それらは単なる文字列です。あなたの場合、文字列(?-xism:^ spam)
これを試してください:
perl -l -e '%config =(qr / ^ spam / => qr / eggs $ /); print $ config {"(?-xism:^ spam)"} '
所属していません StackOverflow