perl指令碼學習指南-簡略筆記

來源:互聯網
上載者:User

標籤:perl

最近在實習,看著公司有些指令碼是perl寫,久聞perl處理文本還是很強大的,趁著周末掃了一般這本書~記錄下了~


undef 預設未定義字元,perl裡面沒有NULL,defined($x)函數:如果參數為undef返回false

qw(cs phy geo) 類似於 (“cs”, "phy", "geo")列表可以賦值給數組@array

數組操作符:pop,push操作末尾,shift,unshift操作開頭,reverse逆序,@array = sort @array;

foreach @array{print $_;}列印數組;$_是一個很強大的預設變數

each操作,返回一對@array的(index, value),用在while迴圈中

perl有一道自動適應標量和列表上下文

sub定義子程式(函數),參數會在@_數組中,調用程式可用&符號,不與預設函數衝突可省略,可在函數中定義該

函數的持久私人變數,用state標識,每次調用函數時,該變數保持上次變化

my限定變數的範圍為當前作用,一般定義變數都用my


<STDIN> 按照行讀取輸入檔案,預設<> 會讀取參數列表的所有檔案,對於每行會以\n結尾,可以用chomp去掉\n

printf可以格式化輸出,sprintf更加強大

檔案控制代碼:open CONFIG, ‘>>:utf8‘, ‘filename‘ or die "failed : $!",die會拋出異常,產生輸出,close CONFIG;

使用檔案控制代碼:類似while(<CONFIG>)讀取檔案;改變預設輸出檔案,select CONFIG; print "123" 到CONFIG檔案,可替換預設STDERR

hash數組:key、value數組;可以賦值給數組,展開hash;reverse變成value=>key:%EVN環境變數

keys %hash返回keys數組,values %hash返回values數組;each返回K、V;exists、delete函數


強大的Regex:\A表示開頭;\z表示結尾;/s匹配任意空白;括弧可以捕獲變數$1,存續到下次匹配成功;

不捕獲模式:/(?:bronto)?aaaa(bb|CC)/此時$1 代表bb或者CC;/(?<name1>\w+)/命名捕獲,$+{name1};

自動捕獲變數:$`匹配前 $&匹配到的 $‘匹配後的變數;/xxxx/p開啟捕獲變數:高版本${^MATCH}

s///替換,類似於sed,支援捕獲$1;\U轉換為大寫

split /正則/, $string:拆分字串為數組;join函數,split的逆過程;

非貪婪量詞:+?,*?,{8,}?,將不進行貪婪匹配;/i忽略大小寫,/m匹配分行符號

$^I = ".bak"可以更新檔案,開啟檔案時候以filename.bak開啟,並寫回原檔案


unless(con):類似if(!con);until:條件為假,重複執行;last類似於break;next類似continue;redo回到迴圈體的開頭(new);可加標籤

各種檔案測試符-e,-M測試檔案各種資訊;stat $filename返迴文件的一系列資訊;my @files = glob “*”:當前路徑所有檔案名稱

字串函數:index,substr;進階排序@res = sort {$a<==>$b && $a cmp $b} @array

智能匹配符:~~:匹配hash的key,數組是否相同




given-when語句:類似switch,有continue和break;


system加命令,去執行子進程;exec跑到另一個進程去,perl不再執行;反引號可以捕獲返回值;

支援fork多進程;defined(my $pid = fork) or die "$!"; unless($pid){子進程工作};支援發送接收SIG;

切片:($first, $last) = (sort @array)[0,-1],數組、hash都可以;eval捕獲錯誤不至於返回;

grep:my @array = grep {$_ % 2} 1..1000;奇數數組;my @array = map {&big_money($_)} @data; 操作data中每個元素;均返回列表






相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.