2012-06-27 56 views
3

我在5.8.8上有一個失敗的測試,我不明白爲什麼,尤其是當它在更新的版本中工作時(可能它只是一個bug)(這裏是一個link to the full code正則表達式/ ms沒有像預期的那樣運行perl 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 [email protected];            

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

在所有最新版本的perl上這工作正常。但在5.8.8測試失敗。我發現通過刪除^$該代碼的工作原理,它像Perls正則表達式引擎忽略/m,但the documentation表示它被支持。

爲什麼這不起作用?和什麼是解決它的最正確的方法? (注意:我認爲測試應該檢查這些元素是否在一行上)

+0

你的問題應該包含[足夠的信息(http://sscce.org/)回答它沒有去現場去做。 – TLP

+0

@TLP它只是連接完整的代碼,如果有人想看看它,除非我失去了一些東西,但我無法想象其他任何影響這一點。任何更多的問題可能是一個分心 – xenoterracide

+0

我會爭辯說,它不會。 「like」並不是我所知道的任何子程序,我的TAP的內容是水。 – TLP

回答

3

這是bug RT#7781。它被固定在5.8.9和5.10.0。

解決方法:

  • qr/^/m相當於qr/(?:^|(?<=\n))/
  • qr/$/m相當於qr/(?=\n|\z)/
+0

必須運行,但稍後會再查找一些細節。 – ikegami

+2

[鏈接到錯誤](https://rt.perl.org/rt3/Public/Bug/Display.html?id=7781) – jfs

+0

任何人都有關於他們如何處理CPAN測試的建議? – xenoterracide

相關問題