perlの出力が変更されました。明らかにバージョン5.10.1と5.14.2の間で変更されていますが、少なくとも完全には変更されていません。 いつ、なぜqr()の出力が変化しましたか?
はバージョンごとに、次のワンライナーを実行し、変更を証明するために:perl -e 'print qr(foo)is."\n"'
perlの5.10.1-17squeeze6(Debianのスクイズ)からの出力:perlの5.14から
(?-xism:foo)
出力0.2から21 + deb7u1(喘鳴Debianの):
(?^:foo)
Perlのドキュメント(perldoc perlop
)は言います:
$レックス= QR/my.STRING /です。
print $ rex; #prints(?si-xm:my.STRING)
s/$ rex/foo /;
はもはや真でないように見える:
$ perl -e 'print qr/my.STRING/is."\n"'
(?^si:my.STRING)
私は、この変更が発生したときに知っている(これはPerlのバージョン、またはサポートライブラリまたは何でも)したいと思います。
いくつかの背景には、ケースでは、関連性の:
この変更は、ユニットテストの束が失敗する原因となっています。単体テストを更新して新しいフォーマットを反映するか、どちらのフォーマットにも対応できるようにテストを動的にするべきかどうかを判断する必要があります。情報に基づいた判断を下すために、なぜその変更が行われたのかを理解したいと思います。いつ、どこで起こったのかを知ることは、その調査から始めるのに最適な場所のようです。
あなたの用語や 'qr'が何をしているのか分かりませんが、それは正しいことではありません。 「qrの出力」と言うのは正しいことではありません。 'qr'は正規表現オブジェクトを生成する演算子です。変更されたのは、正規表現の文字列化です。 'qr'の動作は変更されていません。 –
@AndyLester:テクニカルになりたい場合は、少なくとも新しい正規表現修飾子が使用されている場合は出力*が変更されました。しかしそれは本当にポイントの横にある。あなたは質問の意味を理解しましたか?そして、私は、より正解であるかもしれない方法でそれを表現することは、将来この答えを探すかもしれない多くの人々のために意味を失うだろうと思う。 – Flimzy
'qr'には出力がありません。オブジェクトを返します。その "出力"、すなわちそのオブジェクトの文字列は、変更されたものです。 'print qr/foo/i'の場合、文字列化は暗黙的です。 –