微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

perl – autodie-pragma对编码有影响吗?

为什么我会得到“autodie”不同的输出
#!/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

解决方法

除非有更好的理由进入,否则这看起来像一个与开放伪指令有关的bug。

改变最后一次打开我的$ fh2,’<:utf8','test.txt';解决我的系统上的问题。所以这可能是临时工作。 我只是检查了RT,这是一个注册错误https://rt.cpan.org/Public/Bug/Display.html?id=54777

看起来它与每个pragma都使用不同的方法来重载open函数

原文地址:https://www.jb51.cc/Perl/172982.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐