Time of Update: 2018-12-06
. 任何單字元的萬用字元(\n除外)* 匹配前面的內容零次或多次。+ 匹配前面的內容一次或多次。?匹配前面的內容零次或一次。 非貪婪符號。() 模式分組\1 反向(重複)引用圓括弧中匹配的文字。| 或(擇一匹配)[] 字元集。Eg: [a-zA-Z], [abcxyz]^ 脫字元 表示這些字元除外。只在字元集中使用。\d 數字\w 單詞字元 (數字,字母和底線) [a-zA-Z0-9_]\s 空白字元 (相當於[\f\t\n\r])\D 非數字\W 非單詞\S 非空白{} 字元出現次數。Eg:
Time of Update: 2018-12-06
作者:gnuhpc 出處:http://www.cnblogs.com/gnuhpc/1.shell和Perl的區別和聯絡 perl十足一個萬金油,從自身內部就實現了各種系統命令的功能,在效率上高許多,而且有專門的調試工具,支援物件導向,不論是小指令碼還是大型應用程式都可勝任。
Time of Update: 2018-12-06
Perl中文/unicode/utf8/GB2312編碼之間的轉換是一件很讓人頭疼的事情,我總結了以下主要的轉換方法,供大家瞭解參考。# author: jiangyujieuse utf8;use Encode;use URI::Escape;$/ = "/n";#從unicode得到utf8編碼$str = '%u6536';$str =~ s//%u([0-9a-fA-F]{4})/pack("U",hex($1))/eg;$str = encode( "utf8", $str
Time of Update: 2018-12-06
英文原版見http://www.masonbook.com/。簡介Mason是一個強大的,可以將Perl嵌入文本的模板引擎。它提供了許多特性,協助你使用可重用的組件建立動態Web網站。除此之外,它還提供了很多的其他特性:可以建立標準的、可重用的,像header、footer,或者菜單這樣的組件。你只需要在一個地方進行改變。完整的Web請求的參數處理。內建緩衝,使用者可採用cache介面訪問。整合mod_perl以提供更快的速度和更好的彈性。從一個組件的小段到整個網站,都支援內容過濾。《使用Mas
Time of Update: 2018-12-06
很多時候,我們希望對原有檔案的內容進行一定的修改,linux雖然有sed這個強大的文本編輯命令,但是他只能產生新檔案或列印到screen上(或許sed也具有修改原檔案的功能,小的才疏學淺,尚不知道,煩請大家告訴我),但在perl裡卻有這麼一個命令$^I例子:#!/usr/bin/perluse strict;$^I="";while(<>){ s/^rate.*/rate=0/; s/^testMode.*/testMode=0/;
Time of Update: 2018-12-06
Expect.pm 模組:主要用來和另外一個server進行互動的,比如ftp,telnet等等。在寫一些監控腳步上,也會經常用到。我所用到的方法很簡單,spawn($command,@params),Forks and execs $command. Returns an Expect object upon success or undef if the fork was unsuccessful or the command could not be found. spawn()
Time of Update: 2018-12-06
例子:假設在fred and barney went bowling last night 上使用/fred.+barney/進行匹配。我們知道Regex將匹配上,下面我們具體的講解這一個過程:首先,子模式fred 將匹配其對應的字串。模式的下一部分是.+,它將匹配除了分行符號之外的任一字元,次數大於等於一。但,由於加號(+)是貪婪的;它將儘可能的進行匹配。因此,它將匹配剩餘的所有字串,包括night。現在對banrey
Time of Update: 2018-12-06
通常,Regex是針對單行文本的。由於Perl 可以處理任意長度的字串,因此,Perl 的模式可以輕易的對多行文本進行匹配,就像單行文本一樣。當然,運算式中應當包含多行文本。下面的字串中有4 行:$_ =“I’am much better\nthan Barney is\nat bowling,\nWilma,\n”;錨定^和$是指整個字串的開頭和結束,加強了理解,^和$指的是字串的首和尾,並不是針對單行的。但/m
Time of Update: 2018-12-06
最近打算寫一個c/s形式的socket 監控指令碼。在網上找到了一個執行個體。由於以前很少接觸socket,訊號等東西,所以在寫之前,先瞭解一下他們。下面是關於訊號的一些基礎知識: pid > 0:發送給進程ID為pid的進程 pid == 0:發送給與自己同組,並且自己有許可權向其發送的進程 pid < -1:發送給進程組ID為-pid的進程,並且自己有許可權向其發送的進程 pid == -1:所有自己有許可權向其發送訊號的進程 (繼續補充中)
Time of Update: 2018-12-06
工作需要用perl寫了一個指令碼讀取1G多的檔案,直接報out of memory,對perl不是很熟悉就上網查了資料,後來發現是因為寫的讀取檔案內容時直接將所有檔案內容讀入數組導致這個問題。Code highlighting produced by Actipro CodeHighlighter
Time of Update: 2018-12-07
最近,一直在苦苦尋找一個最適合自己的bug追蹤系統。我自己平時寫的一些小工具,有一些bug需要追蹤管理一下,用記事本顯得格式太隨意了,不好管理。試了很多有名的工具,如Bugzilla,Mantis,感覺都太厚重了,團隊用倒是蠻合適的。後來想著用XML定義一個日誌資料庫,一個Bug開一個檔案,這樣可以詳細記錄Bug的內容及解決過程、方法等。再寫一個前端,用來管理組織這些XML檔案。但我個人的bug量不多,更多的時候,是隨手寫一點想法,這種XML嚴謹的組織方式,並沒有讓我覺得更輕鬆。嘗試著用Emac
Time of Update: 2018-12-06
$指一個 ,@指一堆,%指hash---------------------------------------------------x 字串重複操作符.Eg: "fred" x 3 = "fredfredfred"------------------------------------------------------數組:$#數組名 最後一個元素的索引值$資料名[-1] 最後一個元素pop和push在最後段操作,shift和unshift在最左端操作reverse 反轉列表元素sort
Time of Update: 2018-12-06
Perl實現HTML2TXT中文轉換use HTML::TreeBuilder;use HTML::FormatText; open OUTPUT,">output.txt";$file = "C:/test.html";$tree = HTML::TreeBuilder->new->parse_file("$file"); $formatter = HTML::FormatText->new(leftmargin => 3, rightmargin =>
Time of Update: 2018-12-06
perl是一門非常強大的文本處理語言,之前在寫perl指令碼時,基本上就用Notepad++和print解決了代碼編輯和調試的問題。Notepad++作為編輯器其實是一個相當不錯的選擇了,對perl的代碼高亮做得相當漂亮,喜歡的話還能自己擴充;但是對於調試這一塊,雖然也用這種土辦法寫出上千行的能工作的指令碼,但老是用print查看結果總不是個辦法。 研究了一下,發現兩個不錯的工具: Komodo
Time of Update: 2018-12-07
指令碼這個東東還是非常實用的,可以簡化手動操作。下面這個指令碼是刪除前七天的記錄檔。bat指令碼:@echo offecho ------------Delete log file,develop by terry-------------echo Today date::%date%::Yearset yy=%date:~0,4%::Monthset mms=%date:~5,2%if %mms% GTR 10 (set mm=%mms%) else (set mm=%mms:~1,2%)::
Time of Update: 2018-12-07
一,危險性產生的原因 1, Web程式上手容易,簡單培訓就可以寫,寫出來的程式自然水平參差不齊。 2,好多人沒有安全意識,你和他談“SQL 注入”,根本不知道是什麼概念。 3,好多HTTP Scaner的出現,一下子就會自動掃描大批的網站。 4,相信使用者的輸入,比如又一個name的inputbox,就單純的以為使用者只是會輸入login. 二,File System Problem 1, ../的問題,比如
Time of Update: 2018-12-07
最近在用Perl來做工作的時候,運行到一個地方,需要我輸入一個裝置名稱,以判斷接下來應該做的步驟。每次運行到這裡,我都是手動輸入很長的裝置名稱,比如說ciscocontenteng,每次這樣輸入,不僅累死人,還很容易出錯。這種情況下,可以用Term::Complete這個module來實現用tab鍵自動補全。用法非常簡單,看代碼就差不多能理解了:use warnings; use strict;use Term::Complete;my @completion_list = (“atest”,”
Time of Update: 2018-12-07
假如我有一個子過程,定義如下:sub test_sub { print "test";}我又有一個變數:$test = "test_sub";這個 $test 的值剛好就是上面子過程的名稱。既然我通過 $test 知道了這個子過程名稱,我可以通過 $test 達到調用這個子過程的目的嗎?也就是說,我讓使用者從命令列裡輸入一個子過程的名稱,然後就可以根據這個名稱來調用相對應的子過程。方法一,直接根據使用者輸入的子過程名來調用該子過程。完整的例子代碼如下:use warnings;no
Time of Update: 2018-12-07
補充一下昨天總結的查詢本地已經安裝了哪些 Perl 模組的方法,還有兩種方法可以用:在 shell 裡運行下面的語句:$ perl -mSmart::Comments -el 如果提示了類似下面的錯誤, Can’t locate Smart/Comments.pm in @INC (@INC contains: c:/strawberry/perl/lib c:/strawberry/perl/site/lib .).則表明你的 Perl
Time of Update: 2018-12-07
最近用 Perl 寫了不少自動化測試載入器,用到了一些模組,有幾個覺得挺好的,記錄下來,以後說不定還有需要用到呢。Smart::CommentsSmart comments 提供了一個調試與追蹤代碼的簡單方法,可以列印一個變數值,也可以追蹤、顯示一個迴圈的進度等。最巧妙的是,當你完成了程式的編寫,不需要這些調試代碼的時候,只需要注釋掉use Smart::Comments;