一、UNIX與WINDOWS下的差別
由於PERL在最初是UNIX下的工具,現在雖然PERL已經移植到流行的平台上:WINDOWS系統,但是運用起來卻是有哪麼一點差別,這一點需要引起我們的注意。
1、文件運算符
在UNIX下PERL一共有27個文件運算符可以使用,這些運算符使得我們在不打開文件的情況下就可以獲得文件的各種信息。但是在WINDOWS平台下,我們只能使用其中四個運算符,但萬幸的是這4個運算符功能不錯,基本能滿足我們的需要,這就是下面的那4個運算符:
-d 測試文件是不是一個目錄
-e 測試文件是否存在
-s 測試文件的大小
-w 測試文件是否是可寫的
前兩個運算符返回的是布爾值(即真或假),第3個運算符返回文件的大小(以字節作為返回方式)。下面是使用方法:
if(-e 'perl.exe'){
print 'File size is:'-s'perl.exe';
}
else{
print 'Can't find perl.exen';
}
(-w 'SomeFile')||die "Cannot write to SomeFilen";
2、郵件的發送
在UNIX下運用CGI時,我們往往利用sendmail這個著名的程序進行郵件的發送,但是,在WINDOWS下是沒有這個程序的。為了解決這個問題,有人編寫了一個專門的軟件blat,以便在NT下能夠通過SMTP協議發送郵件,我們可以通過在CGI中通過調用blat實現郵件發送功能。有關blat更詳細的消息請參看Windows NT發郵件程序blat使用說明及CGI用法一文。不過,現在我們在WINDOWS+PERL環境下有一個更好的解決辦法,這個辦法不需要第三方軟件的支持,而是利用WINDOWS的Socket模塊實現發送郵件的功能。使用這個方法需要你的NT服務器Socket模塊已經安裝(這幾乎是肯定的),並且你要選取一個可用的SMTP服務器(這個SMTP服務器你可以利用網上的SMTP服務器中選取一個)。下面是實現上述功能的PERL子程序:
sub smtpmail {
my($recipient,$from,$realname,$subject,$mailbody) =@_;
my ($a,$name,$aliases,$proto,$type,$len,$thataddr,$thisaddr,$i);
my $retaddr = $from;
if ($realname) {
$retaddr = '"'