3

5.8.8でテストが失敗しましたが、理由がわかりません。特に、より新しいバージョンで機能する場合(おそらくそれは単なるバグでした)(完全なコードへのリンクは次のとおりです)

use strict;                                                                                                          
use warnings;                                                                                                        
use Test::More;                                                                                                      

my $fname = 'Fo';                                                                                                    

my $content = do { local $/ ; <DATA> };                                                                             
like $content, qr/^$fname $/xms, q[includes first name];                                                             

done_testing;                                                                                                        
__DATA__                                                                                                             
use strict;                                                                                                          
use warnings;                                                                                                        
use Test::More;                                                                                                      

# generated by Dist::Zilla::Plugin::Test::PodSpelling bootstrapped version                                           
eval "use Test::Spelling 0.12; use Pod::Wordlist::hanekomu; 1" or die $@;                                            

add_stopwords(<DATA>);
all_pod_files_spelling_ok('bin', 'lib');
__DATA__
Fo
oer
bar

最近のすべてのバージョンのperlでは、これは正常に機能します。しかし、5.8.8ではテストは失敗します。^とコードを削除することで、$Perlの正規表現エンジンが無視しているように見えます/m、ドキュメントにはサポートされていると記載されています。

なぜこれが機能しないのですか?そしてそれを修正する最も正しい方法は何ですか?(注:テストでは、これらの要素が単独で一列に並んでいることを確認する必要があると思います)

4

1 に答える 1

3

これはバグRT#7781です。5.8.9および5.10.0で修正されました。

回避策:

  • qr/^/mと同等ですqr/(?:^|(?<=\n))/
  • qr/$/mと同等ですqr/(?=\n|\z)/
于 2012-06-27T17:57:37.363 に答える