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