#!/usr/bin/perl ←perlプログラムを実行するプログラム(インタプリタ) require 'jcode.cgi'; ←日本語文字コードの変換をするプログラムを取り込む read(STDIN,$data,$ENV{"CONTENT_LENGTH"}); ←データを標準入力から読む print"Content-type:text/html;charset=EUC-JP\n\n"; ← HTMLを出力 print <<EOF; <HTML> <HEAD> <TITLE>Thank you for your opinion</TITLE> </HEAD> <BODY> EOF print <<EOF; <H2>生のデータ</H2> <HR> $data<BR> ←生のデータをそのまま表示 <HR> EOF &decode(); ←データを変換するサブルーチンを実行 print <<EOF; <H2>変換したデータ</H2> <HR> お名前:$cgi{'name'}<BR> ご意見:$cgi{'opinion'}<BR> <HR> <A HREF="../iken.html">戻る</A><BR> EOF print"</BODY>\n"; print"</HTML>\n"; sub decode{ ←データを変換するサブルーチン @parts=split('&',$data); ← &で生のデータを分離 foreach(@parts){ ($name,$value)=split("="); ← =で名前と値を分離 $value=~ tr/+/ /; ← +を空白に変換 $value=~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg; ↑ 16進数を取出し,10進数にし,それを文字コードに変換 &jcode'convert(*data,'euc'); ← EUCコードに変換 $cgi{$name}=$value; } }