2014-01-30 24 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第一次實現時。)