CGI-BBS > 電子掲示板 > 簡易BBS > 簡易BBSについて685行以下 foreach (@in) {  を解説して。


カレッヂ
カレッヂ


質問者 katochan  投稿日 3/26(水) 22:28:03
685行以下のコードが理解できません。
@in は未定義?のようですし、
filename= は該当するコードがない?ようです。

	foreach (@in) { 

		($fname) = $_ =~ /\bfilename="([^"]*)"/i;			#\b		区切り文字に一致
		($fname) = $_ =~ /\bfilename=([^\s:;]+)/i unless defined $fname;

		if ($fname eq '') { next; }

		($name) = $_ =~ /\bname="([^"]+)"/i;
		($name) = $_ =~ /\bname=([^\s:;]+)/i unless defined $name;

以下の2行の \s*Content-type:\s*"([^"]+)" がどれをさしているのか分からない。

		($ctype) = $_ = /\s*Content-type:\s*"([^"]+)"/i;
		($ctype) = $_ =~ /\s*Content-Type:\s*([^\s:;]+)/i unless defined $ctype;

		unless ($ctype =~ /^image/i) { &error('エラー',"画像ファイル以外は取扱できません."); }
		if ($ctype eq '') { &error('エラー',"$fnameはContent-Typeが認識できないために受付できません."); }

		if ($name =~ /IMAGE/) {

プロバイダ参照:
サーバのOS:MACサーバ
パソコンのOS:Mac9
エディタ:Jedit4.0
FTPソフト:Fetch3.0.3J1
サーバ移転:していない
改造:していない
CGI習熟度:(未選択)

回答者 やまだ  [削除]  投稿日 3/26(水) 23:59:34
確かにin配列がmy|localで定義されていないですが、よく見ると適当に使われているのでglobal変数(mainクラス中)として
勝手に定義はされていると思いますが。

それから、filename= については、HTTP MIMEの
Content-Disposition: ???; filename= ???
にマッチする正規表現の文字列の一部だと思うのですが。
質問者 katochan  [削除]  投稿日 3/27(木) 11:57:37
やまだ さん 有り難うございます。

>確かにin配列がmy|localで定義されていないですが、よく見ると適当に使われているのでglobal変数(mainクラス中)として
勝手に定義はされていると思いますが。

ヒントをいただいたお陰で理解できるカ所にたどり着きました。
cgi-lib.pl に書いてありました。
初めて、読んだのですが、画像ファイルの処理など書いてありまして、疑問のところが
ほとんど解決?したようで、目から鱗です。

このページは終了したので返信(回答)は書きこめません
 


Web裏技