2009年3月23日星期一

make my code

一直以来编辑、管理的文件都比较简单松散,完全靠手工操作也轻松。随着文档越来越复杂,图片、asy代码、导入文件(\input),手工管理比较麻烦了,于是知道很久前下载的 GNU make 手册仔细看了会,学到够用便 OK :)

听说现在许多 IDE 也可以实现类似 make 的管理功能,但那些只是在管理程序代码上应用,不能达到 make 这样灵活的应用效果,我现在就用 make 来管理我的 LaTeX 文档,我想,其它的 IDE 工具可能不太容易做到。

2009年3月16日星期一

Code comment

今天想到了一个注释代码的好办法。譬如在 Perl 里可以使用
# [ Start a function
....
# End the function ]
这样的形式添加注释,这样可以方便地利用 Vim 的折叠功能。 ^^

2009年3月12日星期四

Perl Encode

为了我那个自动分行的程序,今天仔细研究了一下字符编码,大概搞明白了 perl 对于字符编码的处理。

perl 内部是用`宽字符(一个整数,在 32位系统上MAX=2^32, 64位系统上MAX=2^64)'来表示字符的,对于(从文件、标准输入或程序源码)读入的字符,perl 把它当作字节流存储,并不进行解码。

当需要(譬如要split一个字符串)的时候按照内部`宽字符'解码,如果读入的字符是其它(UTF8、cp936、gb2312、Big5 等等)编码方式时,就需要用Encode::decode 告诉 perl 用正确的方式将字符流解码为 perl内部的`宽字符'。

输出的时候需要将字符流编码。 譬如 windows 中文系统默认为 cp936 编码,这时就需要 Encode::encode("cp936", $str); 告诉 perl 将`宽字符'以 cp936 标准编码,否则在标准输出上将显示乱码。

如果想转换字符编码方式,只需要以正确的方式先将读入的字符 decode,再以需要的编码方式 encode 就行了。