控制結構
子程式正規表示式
namespace -> noun::adjective::adjective
| noun::adjective
| noun
package disk;variable -> [adjective_]* nounpackage disk::audio;
package disk::***::rewritable;
my $next_client;look-variable -> [adjective_]* noun prepositionmy $root_node;
my $final_total;
my %title_of;routine -> imperative_verb [_adjective]? _ noun _ prepositionmy @sales_from;
| imperative_verb [_adjective]? _ noun _ participle
| imperative_verb [_adjective]? _ noun
sub get_recordsub get_record_for
sub is_valid把儲存引用的變數標上_ref字尾sub has_end_tag
my $has_found_bad_record;
my @books;陣列以複數命名,而雜湊以單數命名my $books_ref = \@books;
my %option;字尾if保留給流程控制語句,如next、last、redo等;my %title_of;
my @events;
my @handlers;
其他情況盡量使用if塊;
不要使用unless、until等字尾
不要把子程式的名稱取得和內建函式相同;
標量返回值一定要用return scalar;
讓返回列表的子程式在標量上下文返回「明顯的」值;
通過顯示的return來返回
一定要使用/x標記;
一定要使用/m標記;
以\a和\z作為字串邊界錨點;
總是使用/s標記;
考慮強制使用regexp::autoflags模組;
優先使用m,少在多行正規表示式中用/…/;
考慮使用regexp::common,不要自己寫正規表示式;
Perl 最佳實踐 節選 06
使用 塊 if,不要使用字尾 if。例如,下面的就不好理解 sum measurement if defined measurement 其實,它等於 if defined measurement sum measurement 字尾 if要保留給流程控制語句。不要使用 unless for whi...
Perl 最佳實踐 節選 08
不要在 sort 中重新計算排序鍵。使用 reverse 逆轉列表。使用 scalar reverse 逆轉標量。使用 unpack 取出固定寬度的字段。使用 split 取出簡單的可變寬度的字段。使用 text csv xs 以取出複雜的可變寬度的字段。避免對字串使用 eval 考慮以 sort ...
Perl 最佳實踐 節選 10
不要使用未修飾字檔案控制代碼 bareword filehandle 使用間接檔案控制代碼。如果你要使用包檔案控制代碼,就先將其局域化。使用 io file 模組或三自變數形式的 open 對檔案做 open close print 時一定要檢查結果。顯式關閉檔案控制代碼,而且要盡可能快一點。使用 ...