測試文件的時候發現輸出中文有亂碼,所以學習了一下perl的Encode原理。現做一下總結:
perl的基礎知識:在Perl看來, 字符串只有兩種形式。一種是octets, 即8位序列, 也就是我們通常說的字節數組。另一種utf8編碼的字符串, perl管它叫string。 也就是說: Perl只認識兩種編碼: Ascii(octets)和utf8(string)。
所以輸出時候出現亂碼,應該把utf8編碼轉為用戶能夠接受的形式。例如中文用gb2312.
my $s=":<中文關鍵詞>=英國皇家學會;;《哲學匯刊》;;物理科學;;科學傳播.";
$a=$s=~/>=(.+)$/;
print encode('gb2312',$1)."\n"; #輸出英國皇家學會;;《哲學匯刊》;;物理科學;;科學傳播.