2011-02-10 7 views
16

मुझे "ऑटोडी" के बाद एक अलग आउटपुट क्यों मिलता है?क्या 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 pragma के संबंध में autodie साथ एक बग की तरह दिखता है।

open my $fh2, '<:utf8', 'test.txt'; पर अंतिम खुले को बदलना मेरे सिस्टम पर समस्या को हल करता है। तो यह चारों ओर एक अस्थायी काम हो सकता है।

मैं सिर्फ आर टी जाँच की, और यह एक पंजीकृत बग है:

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

ऐसा लगता है कि open समारोह अधिक भार के विभिन्न तरीकों का उपयोग कर प्रत्येक pragma से कोई लेना देना नहीं है।

+1

मैंने बस उस बग के लिए एक पैच काम किया। https://github.com/pfenwick/autodie/pull/12 – Schwern

संबंधित मुद्दे