2017年2月11日 星期六

一些縮短 perl 程式行數的小技巧

用兩個等長陣列建構 hash


@hash{@keys} = @values

參 http://stackoverflow.com/questions/16755642/perl-built-in-function-to-zipper-together-two-arrays

順便一提,很多時候我們都忘記了, list 和 array 是不同的資料結構。 list 是 literal ,不是一種變數的形態,只是我們經常以 list 來初始化 array (以及 hash )。

my %parataxis=(); #empty hash
my @parataxis=(); #empty array

但是如果初始化的是一個參考資料型態,不管是 hash 或 array ,都有各自的符號 {} / []

my $parataxis={}; #empty hash ref
my $parataxis=[]; #empty array ref

此外,該網頁中使用的 Benchmark 模組可以用來計算函數的執行效率,這是個很實用的小技巧。更詳細的說明參 https://blog.gtwang.org/perl/perl-benchmark-module/

簡單迴圈以 map / grep 處理陣列,以 split / join / splice 處理字串


泛 C 程式語言經常以 { } 括號來表示一個 block ,但是無形中也產生了一、兩個很稀疏的冗行。 python 嘗試以縮排解決這個問題,效果滿不錯的。 perl 的話其實 map 就是一個迴圈,用得好的話可以讓程式很精簡…易讀的話就不是重點了

將一個陣列插入到另一個陣列


參 https://perlmaven.com/how-to-insert-an-array-into-another-array-in-perl

可以分為兩種情況,扁平的或是層級的插入,主要以 splice 函數實作


圖片來源:https://hsto.org/getpro/habr/post_images/707/723/436/70772343650f66c353ad80a06d5272ca.jpg

沒有留言:

張貼留言