去掉字串中非數字的部份

[華語, cmn-Hant-TW]

主要是用在去掉電話號碼上那堆括號或是連字號之類的東西。用正規表示式來處理並不困難,其中 ‘\D’ 代表非數字(注意大小寫),把非數字的字元通通取代成空字串即可。

Perl

$string =~ s/\D//g;

PHP

$string = preg_replace( '/\D/', '',  $string );
Posted in Development. Tags: , . No Comments »

在 perl script 底肚用 open 拿到系統執行的結果

[客家話, hak-Hant-TW]

Perl script 可以用 system(); 來執行外部的程式,偷懶時當好用。 毋過 system(); 有一隻麻煩: 執行結果會直接丟到 stdout,script 自家拿不到結果,是講 script 會拿到執行結果做下一步動作,就要用其他方法了,用 open 加 pipe 就可以做到,像要用 find 尋到全部的 .txt 檔,一隻一隻撈拒打開來,就可以按仔寫:

open FILES, "/usr/bin/find *.txt |"
while (<FILES>) {
  open(FILE, $_);
}

第一隻 open 那邊會存下結果放到 FILES,記得盡後背要加一隻 ‘|’ (pipe) 來導向,用 while 一行一行的撈他印出來。第二隻 open 就是正經來打開檔案了,按仔寫毋會太麻煩,毋夠跨平台的能力較差就是。

Posted in Development. Tags: . 2 Comments »

傳參數給 File::Find::find 的 wanted 函數

[華語, cmn-Hant-TW]

有用到順便記一下,參考這個網頁的討論,應該這樣寫即可

File::Find::find( {wanted =&gt; sub { wanted($arg) }}, $dir);
sub wanted {
  my ( $arg ) = $_;
  ...
}

$arg 即為要傳的參數,$dir 是搜尋目錄。當然參數要傳 reference 也是可以的,像是傳陣列就把參數改成 \@array 之類的即可,丟 reference 的原因是 wanted 函數不會回傳東西,要把處理後東西挖出來就得用這個方法。

Posted in Development. Tags: . No Comments »

dotMac

[華語, cmn-Hant-TW]

很久之前有看過的 notMac,因為要配合作者的 ftp 伺服器軟體,然後又不支援 Leopard,後來就等於是沒在動了。

不過用類似方式,在  apache + mod_perl 上實作的 dotMac,可是一直在發展著呢,之前只能用 svn 抓 source code 回來安裝,現在有包好的 package 可以下載了。

一直沒有時間去試 dotMac,之後有空的話應該要來試看看的,如果說他們可以直接支援 ldap auth 的話會更好 (不能的話就自己動手寫了,啊就perl 啊……)。

Posted in Mac. Tags: , , , . No Comments »