[Perl] 解決 Wide character in print with UTF-8 mode

最近在寫 Perl 的程式,發現在正規比對的時候,print 出中文資料會出現 “Wide character in print at” 的 warning 訊息,在 google 找到一篇解決方法:Perl with UTF-8 mode,這篇提出的解決方法有很多種,comment 留言也有提供解法,可以去看一下,還蠻不錯的,那底下是我參考的解法: 只要在表頭加上:

use utf8;
binmode(STDIN, ':encoding(utf8)');
binmode(STDOUT, ':encoding(utf8)');
binmode(STDERR, ':encoding(utf8)');
完整的檔案如下:
#! /usr/bin/perl -w
use Carp;
use File::Basename;
use LWP::Simple;
use WWW::Mechanize;
use LWP::UserAgent;
use WWW::Shorten '0rz';
use Getopt::Std;
use DBI;
use utf8;
binmode(STDIN, ':encoding(utf8)');
binmode(STDOUT, ':encoding(utf8)');
binmode(STDERR, ':encoding(utf8)');
if($_ =~ m/\s*(.+)<\/a><\/div>\s*/)
{
  $pic_desc = $1;
  print "desc: " . $1 . " \n" if $verbose;
} 

See also