過兩天要開一個會。 想請一些不懂電腦的朋友用 pietty 登入我的筆電, 大家一起用 cat >> chat-log.txt 七嘴八舌把重要對話記下來, 實現克難版 IRC -- 不怕對外網路斷線、 不需要自己架 IRC server、 朋友也不必學 IRC。 結果打字時發現 backspace 鍵只會吃掉半個字元... 啊你留半口是要給誰吃啊? 是說想減肥也不必這麼客氣啊... 可是為什麼在 bash 命令列上打中文就不會有這個問題, 為什麼這時倒退鍵就會很開心地把整個字吃下去呢? 原先猜測是 readline 在幫忙。 所以用 perl + readline 寫一支小程式測試, 還是不行。 最後找到 日本人寫的 caroline 模組 再搭配 小惡魔的解釋, 要用 binmode 設定 utf8 編碼, 才終於解決問題。
這個模組太不知名了, 所以沒有 debian 套件。
請先安裝 gcc 等等開發工具: apt-get install build-essential
,
然後 cpan 安裝 Caroline 模組: cpan Caroline
。
(要花一些時間) 於是以下這支程式就可以正常輸入輸出中文,
backspace 鍵也就不再耍脾氣了, 耶!
另外, 因為這是一支類似即時通/IRC 的程式,
所以每當使用者按 Enter 鍵, 就應該立即輸出, 而不應該把它 hold 在 buffer 裡面。
根據 這一頁 的解釋,
可以用這一句達成: select((select($LOG), $|=1)[0]);
最後, 如果來自命令列上的中文參數亂掉的話, 可以參考
這一頁。 因為現在的 linux 都採 utf8 編碼, 所以我可以採用最簡單的寫法:
在命令列上加 -CA
這兩個選項就 OK 了。
沒有留言:
張貼留言
因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。