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 中测试失败。我发现通过删除^$代码工作,它就像 Perls 正则表达式引擎一样忽略了,/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 回答