2013年9月2日 星期一

perl 使用指令和Storable模組儲存perl格式資料到檔案

因為mysql撈出來中文資料有亂碼
所以想將他存到檔案中,再試看哪個模組( Text::Iconv(有些字會失敗)或 Unicode::MapUTF8 )可以正常轉換成utf-8

perl -MStorable -e '$text = "BEAR!!";  $target = "/home/your_name/git/data.txt"; Storable::nstore({text=>$text}, $target);'
nstore第一個參數必須使用hash,不然會出錯(error log裡面沒報錯,但沒執行nstore,似乎要用eval())

perl -MStorable -e '$target = "/home/your_name/git/data.txt"; $info = &Storable::retrieve($target); print $info->{text}'

使用terminal在mysql上下SQL出現亂碼:
Rellik: 因為terminal預設是utf8,但資料庫存big5進去,所以會亂碼
方法1. 使用Rellik的.screenrc 在那個分頁按 alt+a b =>轉成big5 ,然後ctrl+l 清畫面,再下一次SQL,就正常了
方法2. 在putty上字形要設定細明體(非新細明體),然後windows -- Translation 的地方選use font encoding(最下面那個),缺點是出來的字正常但複製到記事本上是亂碼。(但Ike的不會)
細明體才會是big5,選Courier則否

更多:
http://help.cs.nctu.edu.tw/help/index.php/Setting_-_%E5%B7%A5%E4%BD%9C%E7%AB%99%E7%B7%A8%E7%A2%BC%E8%A8%AD%E5%AE%9A(UTF-8)
工作站編碼設定(UTF-8)

http://help.cs.nctu.edu.tw/help/index.php/Setting_-_%E5%9C%A8%E5%B7%A5%E4%BD%9C%E7%AB%99_UTF-8_%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A%E4%B8%8B%E4%BD%BF%E7%94%A8_Big5
在工作站 UTF-8 環境設定下使用 Big5 - 用法與Rellike的.screenrc檔案相同

http://www.bootf.com/67.html
Putty在默认情况下没有使用UTF-8编码,因此在显示中文的时候会出现乱码。 ( 與Rellik說法有出入 )

如何印出$ENV變數 ( 部份變數參照export內的設定 )
老天尊: Do you know how to dump $ENV in perl?
Chase: print DUMPER(\%ENV)
老天尊: ok, thanks.
老天尊: I have a question.. why we can't dumper $ENV directly?
Chase: you can
Chase: $ENV is a hash though
Chase: now a scalar var
老天尊: print STDERR Dumper $ENV
echo nothing.
Chase: because it is %ENV
老天尊: ohoh
Chase: it's a hash and NOT a hashref
解法:
$ perl -MData::Dumper -e 'print Dumper \%ENV'

沒有留言:

張貼留言