2014-06-07 44 views
0

我有這樣的事情(它的工作原理):如何在perl中替換文件utf8中的字符?

perl -C -MText::Unidecode -n -i -e'print unidecode($_)' unicode_text.txt 

,現在我想要做同樣的腳本:

#!/usr/bin/perl -w -CSA 

use utf8; 
use Text::Unidecode; 


while(<>) 
{ 
    print unidecode($_); 
} 

,但它不工作。

+0

你應該'嚴格使用'; – rightfold

+0

'使用utf8'在這裏沒有任何用處:在代碼中不使用utf-8字符。 – choroba

+0

你的意思是「不起作用」是什麼意思?這個對我有用。 – choroba

回答

2

你應該得到的錯誤消息

Too late for "-CSA" option 

這是什麼使程序讀取輸入文件爲UTF-8編碼。

相反,你需要把

use open qw(:std :utf8); 

while循環,這不一樣-CS在命令行,即之前設置STDINSTDOUTSTDERR處理以UTF-8編碼

+0

這是否會導致您從腳本中獲得某些輸出?我會發布這個答案,但一直無法獲得Text :: Unidecode做任何有用的事情......至少在與Perl5.20一起使用時。 – DavidO

+0

@DavidO:我在版本20上,它工作正常。我假定你已經在'@ ARGV'中放置了一個文件名? – Borodin

相關問題