明示的に入力された正規表現は、Perl YAMLダンプのキーとして許可されていますか?

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

  •  03-07-2019
  •  | 
  •  

質問

これは前の質問に関連しています:読み方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)"} '

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top