我已經看到了這一個班輪{在Perl單線程結束時是什麼意思?
perl -lane '$_{$F[0]}+=$F[1]}print"$_ $_{$_}"for keys%_;{' file
這裏:How can I sum values in column based on the value in another column?
,我不記得了「{」末的作品。 有人可以解釋它是如何工作的?
我已經看到了這一個班輪{在Perl單線程結束時是什麼意思?
perl -lane '$_{$F[0]}+=$F[1]}print"$_ $_{$_}"for keys%_;{' file
這裏:How can I sum values in column based on the value in another column?
,我不記得了「{」末的作品。 有人可以解釋它是如何工作的?
-n assume "while (<>) { ... }" loop around program
這是一個純粹的文本操作,所以它給出了這樣的程序:
while (<>) { $_{$F[0]}+=$F[1]}print"$_ $_{$_}"for keys%_;{ }
這是-n
開關的濫用,因爲while循環早早關門由於原始程序中無法比擬的}
。但-n
交換機添加的關閉}
仍然需要與某些內容匹配,這就是爲什麼在程序結束時需要額外增加{
,即使它沒有任何操作。
換句話說,最後一個{
的唯一原因就是沒有給出語法錯誤。
可能會很高興提及-MO = Deparse – ysth 2010-02-23 04:08:06
我們在_Effective Perl編程第二版中展示了幾個使用這個技巧的例子。 :) – 2010-02-23 20:55:00
完成此操作的更好方法(在我看來)是使用'END {}'塊。 – 2010-02-23 20:56:47
Perl讓我的眼睛受到傷害。 – JasCav 2010-02-22 18:37:32
只是看起來像一個代碼高爾夫解決方案。 – kennytm 2010-02-22 18:39:26