Posts Tagged ‘ perl

Windows 上功能最齊全的 Perl 整合開發環境: DWIM Perl

功欲善其事,必先利其器!!

如果你在 Windows 上找不到容易上手的 Perl 整合開發環境(IDE),那你可以試試「DWIM Perl」。

「DWIM Perl」主要是由「Padre」、「StrawberryPerl」及一些常用的 CPAN 模組所組成,「DWIM」是「Do What I Mean」的縮寫,因此可以看得到它的用心,其中:

  • Padre」是一套 Perl 的程式編輯器,代表的圖像就是右邊那隻美麗的蝴蝶。
  • StrawberryPerl」與「ActivePerl」一樣,是一套運作在 Windows 上的 Perl 直譯器,但 StrawberryPerl 是 OpenSource,並且本身就已經集成了很多常用的 CPAN 模組,StrawberryPerl 的代表圖像就是一顆嬌豔欲滴、但有點曝光過度的大草莓

檔案下載: DWIM Perl

安裝「DWIM Perl」時請安裝在你的 D 糟,安裝好之後只要執行「Padre, the Perl IDE」就會進入它的整合開發環境。

Read more

Linux 下檔案的 SUID/SGID/SBIT 屬性設定

SUID/SGID/SBIT 的屬性同樣是用 chmod 指令設定,在原本 chmod 設定時的三個數字前面再加一個數字。這三個屬性的加權分別為

  • SUID: 4
  • SGID: 2
  • SBIT: 1

Read more

以數學的原理處理四捨五入

我看過太多人都把四捨五入的問題看成是「字串」來處理,實際上,如果把四捨五入做為「數學」來解的話,程式大概只要幾行即可解決。

以四捨五入取整數的例子來講,其原理就是: 任何數值+0.5 再取整數

但要注意的是,當四捨五入遇到「負數」時,處理的方式就會變成「五捨六入」,這是因為中間數要往數值大的那邊進位的緣故。所以加上了負數的處理,程式至少又多了一行:
Read more

Perl 的相關網頁

手冊

教學

Read more

Perl 的 CGI 模組常用語法

載入 CGI 模組

use CGI qw/:standard/;
my $CGI = CGI->new();

取得所有輸入的參數名稱

@param_name = $CGI->param();

取得特定參數的內容

$value = $CGI->param( "param_name" );

取得所有參數的名稱及內容

%param = $CGI->Vars;

轉換 $url 為 url 可接受的字串

$url_escape = $CGI->escape( $url )

取得目前網頁的編碼

$charset = $CGI->charset();

指定網頁的編碼,並送出網頁表頭

print $CGI->header( -charset=>"utf-8", -expires=>"-1d" );

幾種網頁轉址與「302 永久搬移」的語法

轉址的方式分為:

  • 302: 暫時搬移 (Temporarily Moved)
  • 301: 永久搬移 (Permanently Moved)

Read more

刪除指定路徑下的所有目錄及檔案(遞迴)

剛剛在測試 Perl 用來刪除目錄的指令時,想說找找看有沒有比較狠的方法,果然馬上就讓我看到這一篇的這一個副程式:

sub rmdashrf{ 
    foreach (<$_[0]/*>){ 
        rmdashrf($_) and rmdir if(-d); 
        unlink if(-f or -l); 
    } 
    1; 
} 
rmdashrf("/tmp/test");

這個副程式以遞迴方式執行,可以刪除指定路徑下的所有目錄及檔案。

果然,真正 Perl 的高手寫程式根本不用幾行指令,就可以殺人於無形!

如何建立與 Outlook 相容的 IMap 目錄(Perl)

原因

請參考這一篇

Read more

如何得知輸入的字串是否為 UTF-8 編碼 (Perl)

使用下列函數,如果傳回值為 1,表示輸入的字串為 UTF-8 編碼:

#Returns 1 if $text is valid UTF-8 and 0 otherwise.
sub is_utf8 {
    my $text = shift;
    if( $text =~ m/^(
        [\x09\x0A\x0D\x20-\x7E]             # ASCII
        | [\xC2-\xDF][\x80-\xBF]            # non-overlong 2-byte
        | \xE0[\xA0-\xBF][\x80-\xBF]        # excluding overlongs
        | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
        | \xED[\x80-\x9F][\x80-\xBF]        # excluding surrogates
        | \xF0[\x90-\xBF][\x80-\xBF]{2}     # planes 1-3
        | [\xF1-\xF3][\x80-\xBF]{3}         # planes 4-15
        | \xF4[\x80-\x8F][\x80-\xBF]{2}     # plane 16
    )*$/x ){
        return 1;
    }
    else{
        return 0;
    }
} #sub is_utf8

參考網頁

Big5/UTF-8 編碼轉換的模組

Big5 及 UTF-8 編碼的轉換方式有兩種 (請先安裝 Encode::compat 模組):

方式一

use Encode::compat;
use Encode qw(from_to);

my $string = "中文";

#Big5 轉 UTF-8
from_to($string, 'big5', 'utf8');
print "$string\n";

#UTF-8 轉 Big5
from_to($string, 'utf8', 'big5');
print "$string\n";

Read more

return top