名 前 
電話番号 

【応募フォームの結果をブラウザで表示】 

【ソース】 form1.cgi 【解説】
  1. #!/usr/local/bin/perl
  2. #form1.htmlからの送信データは、
  3. #「form1.cgi?namae=名前の文字列&namae=電話番号の文字列」となる
  4. #つまりフォーム間が「&」で区切られ
  5. #各項目(フォーム)名と内容が「=」で区切られる
  6. #送られてくる文字列の長さ
  7. $length=$ENV{'CONTENT_LENGTH'};
  8. #長さ分だけ標準入力から読み込む
  9. read(STDIN, $buffer, $length);
  10. #文字列ごとに分割する
  11. ($shimei,$denwa)=split( /&/ , $buffer);
  12. #フォーム名と内容に分割する
  13. ($name,$value1)= split( /=/ , $shimei);
  14. ($tel,$value2)=split( /=/ , $denwa);
  15. #フォームから送られたデータにスペースがあると、
  16. #プラス(+)に置き換えられるので、
  17. #スペースにしたままにする変換処理をする
  18. $value1=~ tr/+/ /;
  19. $value2=~ tr/+/ /;
  20. #フォームから送られたデータの特殊文字や日本語などは
  21. # % に続く2桁の16進数に置き換えられるので、
  22. #それを変換しなおす処理をする
  23. $value1=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
  24. $value2=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
  25. print "Content-type: text/html \n\n";
  26. print <<EOF;
  27. <HTML><HEAD><TITLE>CGI-TEST</TITLE></HEAD>
  28. <BODY>
  29. 名前 =$value1 <BR>
  30. <BR>
  31. 電話番号 =$value2
  32. </BODY>
  33. </HTML>
  34. EOF
  35. exit;










11.送られる文字列の長さをlengthに代入




16.stdin(標準入力)、stdout(標準出力)。
  lengthの数だけ標準入力から読み込んでbufferに



21.送られてきた文字列を「」のところで分ける




26.さらに「」のところで分ける