Sample Script
各部のサンプルスクリプト
入力データのデコード
read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'};
@pairs=split('&',$buffer);
foreach(@pairs) {
($key,$value)=split("=");
$value=~tr/+/ /;
$value=~s/%(..)/pack('c',hex($1))/eg;
$in{$key}=$value;
}
method=postの場合の記述。$xxx=$in{'xxx'};という形で、送信フォームのname=xxxに対応してデータを受け入れます。日付・時刻の取得
$ENV{'TZ'}='GMT';
$times=(time+9*60*60);
($sec,$min,$hour,$mday,$mon,$year)=localtime($times);
$mon++;
$year=(1900+$year);
$date=sprintf("$year/$mon/$mday $hour:$min:$sec\n");
print $date;で、"年/月/日 時:分:秒"のフォーマットを表示します。フォーマットを変更するにはsprintf()を書き替えます。$fileを開けて表示する
$file='./xxx.dat'; # xxxは任意の名前に書き替えて下さい
open(FILE, "< $file");
while(<FILE>) {
print;
}
close(FILE);
単純に表示します。$textを$fileに追加する
$tmp='./tmp.file'; $file='./xxx.dat'; # xxxは任意の名前に書き替えて下さい open(TMP, "> $tmp"); select(TMP); print $text; close(TMP); select(STDOUT); $_=`cat $file >> $tmp`; unlink($file); rename($tmp, $file); chmod 0604, $file;このスクリプトでは、$tmpに$textを書き込んだ後、下に$fileを食わせてからリネームしています。もちろん両方のファイルを開けて読み出し→書き込みという方法もあります。
HTTPからファイルを取得して表示する
$url='http://xxx.com/xxx.html'; # http://以下は任意に指定します
$http_get="fetch $url";
$_=`$http_get`;
$file=$url;
$file=~s/http\:\///;
$file=~s/\/(.*)\///;
$file=~s/\///;
open(FILE, "< $file");
while(<FILE>) {
print;
}
close(FILE);
$urlをfetch(またはwget)で取得した後、$urlから不要な部分を消去して、ファイル名だけを取り出し呼び出します。HTTPからアーカイブを取得して別ディレクトリに展開する
$url=$in{'url'}; #送信フォームからurlで送る
$dir=$in{'dir'}; #送信フォームからdirで送る
$get=`fetch $url`;
$file=$url;
$file=~s/http\:\///;
$file=~s/\/(.*)\///;
$file=~s/\///;
if($file=~/zip/) {
$melt="unzip $file";
} elsif($file=~/lzh/) {
$melt="lha e $file";
} else {
print"Can't extract $file";
}
unless($dir) {
$m=`$melt`;
unlink($file);
$v=`ls -l`;
} else {
$mv=`mv $file $dir`;
chdir($dir);
$m=`$melt`;
unlink($file);
chdir("..");
$v=`ls -l $dir`;
}
print $v;
$urlの拡張子からファイル形式を判別し、対応するコマンドで展開します。展開先ディレクトリの指定はchdir()で自身が移動して処理しますが、"unzip $file -d $dir"や"lha w $dir $file"という方法もあります。
[ CGI Top ]
[ BACK ]
[ Reference Top ]
[ NEXT ]
[ HOME ]