簡短的perl程式

2022-09-12 05:21:09 字數 1096 閱讀 1064

簡短的perl程式能夠實現大功能。

perl是如何做到的呢?

1. 預設變數

如果沒有向函式提供引數值,則預設引數為$_;

如果沒有變數用於接收乙個表示式的值,則預設接收變數為$_。

perl語言每條語句可像管道那樣執行,通過預設變數$_串接起來。

2. 特殊語法

利用一些正常情況下沒有含義的語法,如while(<>){}.

如果按照正常的語法,這個定法的意義是:讀取一行文字,然後丟棄。

由於正常情況下沒有人會這麼用,perl語言將這一語法利用起來了。在實際中寫起來非常方便。

3. 變數值不用給定初值,不用提前宣告

perl會自動為變數選擇合適的初值,如果沒有給定的話。

對於數值,初值為0;對於字串,初值為「「,也就是空字串。

4. 對於一些常用語法的簡潔寫法

如通過qw定義乙個字串list,可避免寫引號。

簡短的好處?

簡短,再加上perl與shell結合非常好,可以在命令列上直接寫出簡短又功能強大的**。

乙個常用用法:

find . |perl -e 'while(<>)'

處理標準輸入的每一行文字。'...'表示每行的處理**。

通過動態宣告乙個函式,省略while,只提供每行的處理**,可以進一步節省位元組。

process_each_line.pl

#!/usr/bin/perl

my $cmd=$ar**[0];

my $func = eval "sub}";

die "unable to compile '$cmd', aborting...\n" if not defined $func;

$func->();

命令列呼叫

find . |./process_each_line.pl 'print if /pl$/'

列印出當前目錄下所有以pl結尾的檔名。

process_each_line.pl 會生成乙個函式 sub}(第3行),然後再呼叫這個函式(最後一行)。

可繼續擴充這個檔案,加入一些常用函式,供在命令列上直接呼叫。

簡短的說明

本人愛丁堡小弱弱,目前是ecs的學生 有想要交流的可以私信我 我打算把大一第一學期學的haskell相關知識,分享一下,權當複習了 本學期從兩個方面學習了haskell,一節課是cl computation and logic,另一節課是fp functional programming 所以我也打...

perl 子程式的使用

在perl中可以自己建立子程式 subroutine 關鍵字sub,子程式名以及用花括號封閉起來的 塊。sub marine 子程式名與標量的命名空間是不同的兩個部分。子程式的返回值 最後一次運算的表示式即是預設的返回值。也可以用return來顯式的返回,這樣之後的語句不會執行。在標量上下文返回的會...

自動郵件程式 perl

usr bin perl pod author laomeng e mail 18682093512 163.com 運維工作自動化 由於這種工作是一種重複性的操作,在人工產生的報表過程有可能出現 資料的錯或格式不正確通過 難免不認真 所以為減少工作的重複性和避 免生產過程中資料錯誤和格式錯誤而開發...