perl編寫之前的一些習慣細節

2021-07-27 21:54:24 字數 2604 閱讀 4374

指令碼執行的關鍵資訊儲存在日誌裡

**整理

下述資訊,僅供自己編寫新指令碼之前的回顧內容。編寫perl指令碼,處理好下面介紹的內容,那麼指令碼閱讀性就完全滿足個人眼光了。

雖然perl有很多實用的模組,可以利用;但是不使用模組編寫**,更容易理解。

無非就是標量、陣列、雜湊。

關於雜湊和陣列的資料型別,如何選用?

個人理解,索引號簡單(即索引號有規律)的就用二維陣列;索引號複雜的就用雜湊。

hash和二維陣列的簡單用法,參見:

簡述perl的引用(包括標量、陣列、hash等資料型別的引用) - 學而不思則罔,思而不學則殆 - 部落格頻道 - csdn.net

環境變數,在perl裡就是雜湊型別。

%env

$env="value";

但是該方法只能在該程序中有效,當退出該程序時,賦值將不會繼續存在;同時其它程序也不會知道此次賦值。

用open就挺方便;記著是三個引數就行,配合or die檢查檔案是否開啟成功。

比如:

open

my$file***, "<","/home/***.dat"

ordie

"error: cannot open this file";

while(<$file***>)

用shell命令,就挺方便。

file::basename

getopt::long模組是用於解析命令列引數的perl模組。

詳情見:

例如:

#!/usr/bin/perl 

usestrict;

usewarnings;

usegetopt::long;

my @libs = ();

my %flags = ();

my ( $verbose, $all, $more, $diam, $debug, $test, $step, $aa);

getoptions(

'verbose+' => \$verbose,

'more!' => \$more,

'debug:i' => \$debug,

'lib=s' => \@libs,

'flag=s' => \%flags,

'test|t' => \$test,

'all|everything|universe' => \$all,

'aa' => \$aa,

);

用反撇號`,返回值是內部print或者echo等形式產生的。

可以利用管道符|,或者| xargs -i echo {};強制產生返回值。

雖然呼叫非perl內建命令,會導致程式在不同系統(比如linux、windows)移植上出現問題。

但是,個人常用的perl指令碼,只會應用到linux系統裡。所以,個人更習慣使用shell、grep、sed、awk等命令結合的方式。這也是符合perl語言的定位,支援指令碼實現採用「條條大道通羅馬」方式。

可選smart::comment模組

sub configuration  == 9;

}configuration(password =>

'xyzzy', verbose =>

9, socre =>

0);

包,一般起名叫packagename.pm

#!/usr/bin/perl

use strict;

use warnings;

package packagename

#require exporter;

#our @isa=qw(exporter);

#our @export=qw(subname1 subname2 subname3 $varname1 $varname2);

#our @version=1.0;

sub subname1

1;

說明:

1. 下述四行**使用的話,在use packagename之後,函式呼叫而已不用指明packagename,即subname1()

2. 否則,在use packagename之後,函式呼叫需要用指明packagename,即packagename::subname1()

#require exporter;

#our @isa=qw(exporter);

#our @export=qw(subname1 subname2 subname3 $varname1 $varname2);

然後,載入模板的目錄,使之成為庫的目錄。,假設packagename.pm/my/dir目錄裡。

use lib '/my/dir';
用open產生乙個perl.log就挺方便。

log::log4perl

perltidy命令。需要自行安裝。幫助**排版規範化。

程式設計的一些習慣

最近在寫一些框架應用類的程式,其中出現了一些莫名其妙的bug,或者是令人匪夷所思的問題,解決的方案網上沒有,當自己解決了之後,對於解決的辦法也是哭笑不得,例如重新引入工程之類的解決辦法,讓自己覺得讓這些低階的錯誤影響了自己的 推進速度實在是不應該,太多的時間都花在除錯bug上了,而不是了解業務或者是...

公司的一些習慣

開始介面一般都叫splash activity splash 服務xxservice活動xxactivityactivity main內容提供者xxprovider廣播接收器xxreceiver碎片fragment xx類的屬性mhandler一般是m開頭,然後接單詞的首字母大寫 listview或...

C 的一些細節

1.c 中,將負數賦值給unsigned是完全合法的。例如,將 1賦值給unsigned char,那麼結果是255.2.c 中,double的精度和計算速度都要超過float,long double則需要承擔額外的執行代價。3.std ou t hi d endl 等價於std out hi 4....