雖然許多CGI程序在不同的服務器上都運行得很好,但是還有一個問題,當程序員需要對文件進行拷貝,改名或刪除時,他用的是特定的操作系統上的shell命令,而沒有采用perl語句。 (例如, system("cp $file1 $file2");) 這樣做僅在Unix下行得通,而且,當你把未經檢查的變量傳給shell時,還將可能產生潛在的安全隱患。
下面是一些Perl語句,可以用來替換常用的操作系統命令,這些語句可以工作于任何操作系統上。
### 刪除
unlink("$cgidir/file.dat");
### 改名
rename("$cgidir/oldfile.dat","$cgidir/newfile.dat");
### 拷貝
open(FILE1,"<$cgidir/file1.dat");
open(FILE2,">$cgidir/file2.dat");
binmode(FILE1);
binmode(FILE2);
while (<FILE1>) { print FILE2; }
close(FILE1);
close(FILE2);
### 設置文件權限
chmod(0777,"$cgidir/file.dat");
### 創建目錄
mkdir("$cgidir/newdir",0777);
### 刪除目錄
rmdir("$cgidir/newdir");
### 當前日期/時間
$date = scalar localtime(time);
print $date;
通過使用上面介紹的這些技巧,你不僅可以節省時間,而且也可以寫出更好的程序。