2011-02-10 26 views
16

Tại sao tôi nhận được sau khi "autodie" một đầu ra khác nhau?Liệu autodie-pragma có ảnh hưởng đến mã hóa không?

#!/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 

Trả lời

17

Trừ khi ai đó đến với một lý do tốt hơn, điều này có vẻ giống như một lỗi với autodie liên quan đến open pragma.

Thay đổi lần mở cuối cùng thành open my $fh2, '<:utf8', 'test.txt'; khắc phục sự cố trên hệ thống của tôi. Vì vậy, đó có thể là một công việc tạm thời xung quanh.

tôi chỉ kiểm tra RT, và đây là một lỗi đã đăng ký:

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

Hình như nó đã làm với mỗi pragma sử dụng nhiều cách khác nhau của quá tải open chức năng.

+1

Tôi vừa sửa một lỗi cho lỗi đó. https://github.com/pfenwick/autodie/pull/12 – Schwern

Các vấn đề liên quan