2011-02-10 79 views
16

爲什麼我會在「autodie」之後得到不同的輸出?autodie-pragma對編碼有影響嗎?

#!/usr/bin/env perl 
use warnings; 
use 5.012; 
use utf8; 
use open ':encoding(utf-8)'; 
use open ':std'; 

open my $fh, '>', 'test.txt' or die $!; 
say $fh 'käse'; 
close $fh; 

open my $fh1, '<', 'test.txt' or die $!; 
while (my $row = readline($fh1)) { 
    print $row; 
} 
close $fh1; 

use autodie; 

open my $fh2, '<', 'test.txt'; 
while (my $row = readline($fh2)) { 
    print $row; 
} 
close $fh2; 

# Output: 
# käse 
# käse 

回答

17

除非有人有更好的理由來的,這看起來像相對於open編譯與autodie的錯誤。

將上次打開更改爲open my $fh2, '<:utf8', 'test.txt';可以修復我係統上的問題。所以這可能是一個臨時工作。

我只是檢查RT,這是註冊的錯誤:

https://rt.cpan.org/Public/Bug/Display.html?id=54777

看起來有使用過載open功能不同的方式每個編譯做。

+1

我剛剛爲這個bug修補了一個補丁。 https://github.com/pfenwick/autodie/pull/12 – Schwern 2012-06-19 21:53:17

相關問題