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" );

几种网页转址与“301 永久搬移”的语法

转址的方式分为:

  • 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