2014-01-30 21 views
3

当我运行该脚本,我得到8行输出,而不是2意外行为PerlIO的:编码

#!perl 
use strict; 
use warnings; 
use 5.10.1; 

use PerlIO::encoding; 
use Encode qw(:fallbacks); 
$PerlIO::encoding::fallback = Encode::FB_HTMLCREF; 
binmode STDOUT, ":encoding(cp850)"; 

say "TEST"; 
say "Hell\x{263a}\x{263b}llo.txt"; 

输出:

# TEST 
# TEST 
# Hell☺☻llo.txt 
# TEST 
# Hell☺☻llo.txt 
# TEST 
# Hell☺☻llo.txt 
# 

为什么这个脚本输出这么多线?

+2

对我来说看起来像一个bug。在perl 5.18.2上确认了 – cjm

+0

,同样的情况也发生在'utf8'等其他编码上。这似乎是一个'FB_HTMLCREF'的东西。 – amon

回答

3

这是a really old bug: RT#40401RT#29720可能是相同的错误,这使得它差不多有10年的历史。 (这就是报告的时间;我猜这个bug可以追溯到$PerlIO::encoding::fallback第一次实现时。)