2011年5月17日 星期二

Perl 隨手筆記

最近因緣際會之下寫了一小段時間的 perl, 筆記一下一些基本心得, 搞定後大概很長一陣子都不會再碰 perl 吧。這次學的方式比較隨興, 大概在網上要用到時查查文件, 還有看看 DK 在 github 的程式, 不像以前會好好找一本書仔細讀。藉機體會不同學程式的方法, 目前仍是一知半解, 大概寫起來會動的狀態, 感覺還不錯。

關於 packageperl的包(package)和模块(PM) 介紹得很清楚, 另外自己試了一些東西:
  • package/module 和 目錄/檔案 對應, 這點和 java、python 差不多
  • module 要和檔名同名, 慣例是用 WikiWord 命名
  • module 最後一行要是 1
  • perl -I MODULE_PATH ... 會在 MODULE_PATH 下檢查 載入的 module。注意 -I 如同 java 的 -cp, 要放在其它參數之前。相較之下, python 用 PYTHONPATH 有些不直覺, 不過配合 PYTHONPATH=... python ... 的方式執行, 也不會太不方便
開頭必寫
  • use strict;
  • use warnings;
  • use utf8;
查函式
  • perldoc -f FUNCTION, 比方說 perldoc -f join

注意 perl 有傳值和傳參考之分, python和 java 只傳參考簡單多了。現階段還沒感受到區分傳值和傳參考帶來的好處。

符號會影響到取值的方式, 目前大概知道意思, 不過很多情況是是亂試試到對。之後若要再寫 perl, 該先弄清楚這點。

幾種函式開頭的慣例寫法
  • my $first_argument = shift || croak;
  • my ($a, $b, $c) = @_;
Croak or Die? 說明兩者的差別, 看起來 croak 比較好用一點, 不過我會更想像 Python 那樣 dump stack trace。似乎後來版本的 perl 有內建 croak (在 Carp 裡)。

小結: 在徹底地學過 python 體系後, 現在學新語言時比較知道該學的項目, 還有拿捏學習的順序。知道別妄想一次到位, 要能忍受一邊寫出不道地的程式, 一塊塊地學起來。也更深刻體會到, 改用別的語言, 熟悉度落差的影響比預想得嚴重, 可當日後選擇語言的參考依據。

    沒有留言:

    張貼留言

    在 Fedora 下裝 id-utils

    Fedora 似乎因為執行檔撞名,而沒有提供 id-utils 的套件 ,但這是使用 gj 的必要套件,只好自己編。從官網抓好 tarball ,解開來編譯 (./configure && make)就是了。 但編譯後會遇到錯誤: ./stdio.h:10...