下記フォームに必要事項を入力後、確認ボタンを押してください。
掲示板などで二度目に訪問した際に前回入力したデータ(名前/住所)があらかじめフォームに入っている場合があります。これはCookie(Cookie)という仕組みを使って、ユーザーのパソコンに書き込み情報を保存しておき、次に訪問した時にその情報を読みこみでフォームに表示させています。Cookieの書式は次のとおりです。
Cookie名=値lexpores=値;domain=値;path=値;secure@ Cookie名=値 Cookieに覚えさせるデータ部分です。Cookie名は自由につけてかまいません。覚えさせたCookieを呼び出す際には、このCookie名を使います。=の後に覚えさせたい値を書きます。Cookie名と値の区切り文字は=ですので、値の中に=を使うことはありません。 A expire=値 Cookieの有効期限を指定します。指定した有効期限がくるとそのCookieは無効とみなされ保存されなくなります。融合期限の書式は曜日、日-月-年 時:分:秒時間帯で、次のようになります。曜日の部分はMON、Wedのように省略形で書いてもかまいません。
#[CODE-SAMPLE]$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$ # !/use/bin/perl use lib::util; use 'jcode.pl'; use CGI; ##メインプログラム # !/use/bin/perl use lib::util; use 'jcode.pl'; use CGI; ##メインプログラム if($ENV{'HTTP_COOKIE'}){ *data=getCookie($ENV{'HTTP_COOKIE'}); $count=$data{'Count'}; $count++; } else{ $count=0; } ##ヘッダーに追加する書式 #set-cookie:count=$count/; expires=$ENV{'DATE}+1minutes/; #path/; domani/; secure/ print <<EO; Content-type:text/html Set-Cookie:Count=$count; <HTML> <HEAD> <title>テストCookieプログラム</title> </head> <body> Count:$count<BR> <Form ACTION>="/cgi-bin/cookie.cgi" method="post"> <input type="submit" value="next"> </form> </body> </html> EO exit(0); sub getCookie { local($cookie)=$ENV{'HTTP_COOKIE'}; @cookie=split(//,$cookie); foreach(@cookie){ local($name,$val)=split(/=/); $data{$name}=$val; } return *data; } #$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#
CGIでHTMLを表示する場合、Content-type:text/htmlヘッダの後に次の文を追加します。 ● Set-Cookie:Cookie文字列 Cookieを作成する流れは次のとおりです。 @ 変数名の値の文字列をセット まず書く変数名=値という文字列を作ります。この例では名前、メールアドレス、色番号の3種類です。
$c_name="name=$name"; $c_mail="mail=$mail"; $c_color="color=$color";A Enc_Sep_Code文字列を接続 次のこの3つをEnc_Sep_Codeという文字で接続します。ここのポイントはつなぐ記号は=ではなく、Enc_Sep_Codeという文字列であるという点です。
$C_line=join('Enc_Sep_Code',$c_name,$c_main,$c_color);B =,と;記号をEnc_Ea_CodeとEnc_Colon_Codeに変換 =,と;記号をEnc_Ea_CodeとEnc_Colon_Codeに変換します。=はCookie名=値の区切り文字ですので、値の中では使用しません。また、;は次のexpireとの区切り文字ですのでこちらも別の文字列に変換しておきます。
$c_line=~ s/=/Enc_Eq_Code/g; #=をEnc_Eq_Codeに変換する。 $c_line=~ s/=/Enc_Colon_Code/g; #;をEnc_Colon_Codeに変換C Cookie名=値;expires=有効期限という文字列を作成します。
$c_line="cookietest=\c_line\;expires=sat,1-1-2018 00:00:00 GMT";
#[CODE-SAMPLE]$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$ #!/usr/bin/perl use CGI qw(:standard); require 'jcode.pl'; $CgiURL='cookie.cgi'; #フォームから入力された値を得ます。 $name=param('name'); #名前 &jcode::convert(*name,'euc');#EUCコードに変換 $mail=param('mail');#メールアドレス $color=param('color');#好きな色の番号 $color--; if($color>=0){ #もし色番号が選択されていれば @color=('赤','黄','青','緑','オレンジ'); $colorname=$COLOR[$color]; #色番号を色名に変換する } ####Cookie文字列の作成 #変数名=値という文字列を作る $c_name="name=$name"; $c_mail="mail=$mail"; $c_color="color=$color"; #各文字列をEnc_Sep_Codeという文字列でつなぐ $c_line=join('Enc_Sep_Code',$c_name,$c_mail,$c_color); #$c_lineに含まれる=,と;記号を別の文字列に変換する。 $c_line=~ s/=/Enc_Eq_Code/g; #=をEnc_Eq_Codeに変換 $c_line=~ s/;/Enc_Colon_Code/g; #;をEnc_Colon_Codeに変換 $c_line="cookietest=\c_line\;expires=sat,1-1-2018 00:00:00 GMT"; ################################################ #HTML表示 print <<"IO"; Content-Type:text/html Set-Cookie:$c_line <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="Set-Cookie" content="cookietest=visit_page:top;expires=sat,1-1-2016 00:00:00 GMT"> <link rel="stylesheet" href="../quest/stylesheet.css" > <title>Cookieテストプログラム</title> </head> <body text="#000080" bgcolor="#FFFFFF"> <h1>Cookieテストプログラム version1.0.0</h1> <form action="$CgiURL" method="post"> <table> <tr> <td>Name</td> <td><input type="text" size="20" name="name"></td> </tr> <tr> <td>Mail-Address</td> <td><input type="text" size="20" name="mail"> </td> </tr> <td>Favoite Color</td> <td> <input type="radio" name="color" value="1">赤 <input type="radio" name="color" value="2">黄 <input type="radio" name="color" value="3">青 <input type="radio" name="color" value="4">緑 <input type="radio" name="color" value="5">オレンジ </td> </tr> <td colospan="2" align="center"> <input type="submit" value="Cookieをセットします"> </td> </tr> </table> </form> 次のCOOKIEがSETされました。<br><br> IO #入力されたデータを表示 print"名前:$name<br>\n" if($name); print"メールアドレス:$mail<br>\n" if($mail); print"好きな色は:$colorname<br>\n" if($colorname); print<<"IO"; </body> </html> IO exit; #[CODE-SAMPLE]$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$
CGI以外のページを閲覧した場合でも、Cookieを記憶させたい場合にはmetaタグを使います。metaタグの書式はヘッダー名にSet-Cookieを、値にCookie文字列を書きます。 ● metaタグでCookieを記入 <meta http-equiv="ヘッダ名" content="値">
HTMLにmetaタグを使ってCookieを記憶させる場合は常に同じ値しか与えることができません。JavaScriptを使うことで訪問時間など、動的にデータを記憶させることができるようになります。書式は、値の部分にCookie文字列を書きます。 ● document.cookie="値" visit_time:訪問時間というCookieを記憶させるプログラムです。
<script Language="JavaScript"> <!-- dd=new Data(); VisitTime=dd.getTime(); document.cookie="cookietest=visit_time;"+VisitTime+"\; expires=Sat,1-Mar-2017 00:00:00 GMT"; document.write("Cookie名:cookietest<br>値:visit_time:"+VisitTime+"<br><br>\n"; //--!> </script>
ユーザーがCGIにアクセスすると、そのパス(URL)で有効なCookieがサーバーに送信されます。送信されたCookieは環境変数$ENV{'HTTP_COOKIE'}から取り出すことができます。 ● $ENV{'HTTP_COOKIE'}の値を読み込み
@pairs=split(/\;/,$ENV{'HTTP_COOKIE'}); foreach $pairs(@pairs){ ($cname,$cvalue)=split(/\=/,$pair); $cname=~ s/Enc_Eq_Code/\=/g; $cvalue=~ s/Enc_Eq_Code/\=/g; $cname=~ s/ //g; $COOKIES{$cname}=$cvalue;} @ ハッシュに取り込み ひとつのサイトにいくつものCookieがセットされている場合があるため、まずすべての有効なCookieを次のようなハッシュにいれます。 ● $COOKIES{Cookie名}=値 A 配列に分割 各Cookieは、;区切りで$ENV{'HTTP_COOKIE'}に入ってますので次のようにまず;で分割し、@pairs配列にいれます。 ● @pairs=split(/\;/,$ENV{'HTTP_COOKIE'}); B 名前と値を分割 CookieはCookie名=値という形式であるためCookie名と値に分割します。 ● ($cname,$cvalue)=split(/\=/,$pair); C 変換した文字列を元に戻す Cookieに保存したときに=をEnc_Eq_Codeに変換したのでそれを元に戻します。 ● $cname=~ s/Enc_Eq_Code/\=/g; ● $cvalue=~ s/Enc_Eq_Code/\=/g; D 値を代入 $COOKIES{Cookie名}に値を代入します。 ● $COOKIES{$cname}=$cvalue; E COOKIEハッシュから値を取出す 次に%COOKIESハッシュから必要な値を取り出します。この例ではCookie名は'cookietest'であるため、必要な値は$COOKIES{'cookietest'}に入っています。Cookieの値は次のようになっています。
nameEnc_Eq_Code名前Enc_Sep_CodemailEnc_Eq_CodeメールアドレスEnc_Sep_CodecolorEnc_Eq_Code色番号名前に;が使われていればEnc_Colon_Codeに変換されています。これを元に戻します。
foreach (split(/Enq_Sep_Code/,$COOKIES{'cookietest'})){ ($cname,$cvalue)=split(/\=/); $cname=~ s/Enc_Colon_Code/\;/g; $cvalue=~ s/Enc_Colon_Code/\;/g; &jcode::convert(*cvalue,'euc'); $COOKIE{$cname}=$cvalue; } foreach(split(/Enc_Sep_Code/,$COOKIES{'cookietest'})){F 変数と値に分割 $COOKIES{'cookietest'}をEnq_Sep_Codeで切り分けて、それぞれの変数名=値ごとに処理を行います。 ● ($cname,$cvalue)=split(/\=/); G Enc_Colon_Codeを;に変換 ● $cname=~ s/Enc_Colon_Code/\;/g; ● $cvalue=~ s/Enc_Colon_Code/\;/g; H文字コードをEUCに変換 ● &jcode::convert(*cvalue,'euc'); I$COOKIE{変数名}に値を代入 ● $COOKIES{$cname}=$cvalue; この結果$COOKIE{'name'}に名前、$COOKIE{'mail'}にメールアドレス、$COOKIE{'color'}に色番号が入ります。次のプログラムは入力されたデータをCookieにセットし、現在のCookieを表示します。リロードすると前にセットしたCookieが表示されます。
CGI::Cookieを使うと簡単にCookieの値を設定することができます。
$NewCookie=new CGI::Cookie(-name=>'test',-value=>"$time",-expires=>'hursday,31-Dec-2018 00:00:00 JST');次の要素を指定します。
-name:Cookieの名前 -value:値 -expires:有効期限 -path:パス -domain:有効ドメイン名
#[CODE-SAMPLE]$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$ #!/usr/bin/perl use CGI::Cookie; $time=time; #-name:Cookieの名前 #-value:値 #-expires:有効期限 #-path:パス #-domain:有効ドメイン名 $NewCookie=new CGI::Cookie(-name=>'CookieName',-value=>"$time",-expires=>'Thursday,31-Sep-2016 00:00:00 JST',-path=>'PATH',-domain=>'有効ドメイン'); print <<"IO"; Content-type:text/html Set-Cookie:$NewCookie <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="../quest/stylesheet.css" > <title>Cookieテストプログラム</title> </head> <body> <h1>Cookieテストプログラム version1.3.0</h1> <br> <p> NewCookie(値をセットしたCookieセット) : $NewCookie<br> NowCookie (現在のCookie)): $ENV{'HTTP_COOKIE'} <br> </p> </body> </html> IO exit; #[CODE-SAMPLE]$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$
%cookies=fetch CGI::Cookie; $cookie=$cookies{'test'};$cookieからvalueの値だけを取り出すには次のようにします。
$cookie->{'value'}->[0];次の文はアクセスした時間をセットするプログラムです。NewValueがCookieにセットされる値、NowValueが前回Cookieにセットされた値です。
#!/usr/bin/perl use CGI::Cookie; $time=time; #Cookieの値を取り出す。 %oldCookies=fetch CGI::Cookie; $cookie=$OldCookies('test'); #Cookieからvalueの値をとりだす <pre>$oldvalue=$cookie->{'value'}->{0};</pre> #今回セットするCookieを作成 $newCookie=new CGI::Cookie(-name=>'test',-value->"$time",-expires->'Thursday,31-Dec-2016 00:00:00 JST'); print<<"IO"; Content-type:text/html Set-Cookie:$NewCookie <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="../quest/stylesheet.css" > <title>Cookieテストプログラム</title> </head> <body> <h1>Cookieテストプログラム version1.3.0</h1> <br> <p> NewCookie(値をセットしたCookieセット) : $NewCookie<br> NowCookie (現在のCookie)): $ENV{'HTTP_COOKIE'} <br> </p> </body> </html> IO exit;
#[CODE-SAMPLE]$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$ #!usr/bin/perl use CGI qw(:standard); use CGI::Cookie; require 'jcode.pl'; $time=time; #フォームから文字列を得る $text1=param('text1'); $text2=param('text2'); &jcode::convert(*text1,'euc'); &jcode::convert(*text2,'euc'); #Cookieの値を取り出す %OldCookies=fetch CGI::Cookie; $cookie=$OldCookies{'test'}; $ctext1=$cookie->{'value'}->[0]; $ctext2=$cookie->{'value'}->[1]; $ctime=$cookie->{'value'}->[2]; #今回セットするCookieを作成 $NewCookie=new CGI::Cookie(-name=>'test',-value=>["$text1","$text2","$time"], -expires=>'Thursday,31-Sep-2016 00:00:00 JST'); print <<"IO"; Content-type:text/html Set-Cookie:$NewCookie <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Cookieテストプログラム</title> </head> <body> <h1>Cookieテストプログラム version1.5.0</h1> <div class="profile" style="text-align:center;"><form action="cookie5.cgi" method="post"> text1:<input type="text" name="text1" size="20"><br> text2:<input type="text" name="text2" size="20"><br> <input type="submit" value="SET"style="width:100px;margin:2px;"> </form></div> <form action ="cookie5.cgi" method="post" style="width:100px;margin:2px;"> <input type="submit" value="next" style="width:100px;margin:2px;"> </form> NewCookie :$text1/$text2/$time NowCookie : $ctext1/$ctext2/$ctime </p> </body> </html> IO exit; #[CODE-SAMPLE]$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$
リピータ調査などの目的でサイト全体のページ用のCookieを設定しているとき、それとは別に掲示板用のCookieを使いたい場合はそれらを別々のCookieとして保存します。複数のCookieを保存させるには複数のCookie文字列を作成して、それぞれにSet-Cookieを行います。 ● 複数の名前のCookieを作成し、それらを全てセット
#[CODE-SAMPLE]$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$ #!/usr/bin/perl use CGI qw(:standard); use CGI::Cookie; require 'jcode.pl'; #Cookieの値を取り出す。 %OldCookies=fetch CGI::Cookie; #Cookie1の値 $cookie1=$OldCookies{'Cookie1'}; $ctext11=$cookie1->{'value'}->[0]; $ctext12=$cookie1->{'value'}->[1]; $ctext13=$cookie1->{'value'}->[2]; #Cookie2の値 $cookie2=$OldCookies{'Cookie2'}; $ctext21=$cookie2->{'value'}->[0]; $ctext22=$cookie2->{'value'}->[1]; $ctext23=$cookie2->{'value'}->[2]; #Cookie3の値 $cookie3=$OldCookies{'Cookie3'}; $ctext31=$cookie3->{'value'}->[0]; $ctext32=$cookie3->{'value'}->[1]; $ctext33=$cookie3->{'value'}->[2]; #今回セットするCookieを作成 #フォームから入力文字列を得る $text11=param('text11'); $text12=param('text12'); $text13=param('text13'); $text21=param('text21'); $text22=param('text22'); $text23=param('text23'); $text31=param('text31'); $text32=param('text32'); $text33=param('text33'); &jcode::convert(*text11,'euc'); &jcode::convert(*text12,'euc'); &jcode::convert(*text13,'euc'); &jcode::convert(*text21,'euc'); &jcode::convert(*text22,'euc'); &jcode::convert(*text23,'euc'); &jcode::convert(*text31,'euc'); &jcode::convert(*text32,'euc'); &jcode::convert(*text33,'euc'); $NewCookie1=new CGI::Cookie(-name=>'Cookie1',-value=>["$text11","$text12","$text13"],-expires=>'Thursday,31-Sep-2016 00:00:00 JST'); $NewCookie2=new CGI::Cookie(-name=>'Cookie2',-value=>["$text21","$text22","$text23"],-expires=>'Thursday,31-Nov-2020 00:00:00 JST'); $NewCookie3=new CGI::Cookie(-name=>'Cookie3',-value=>["$text31","$text32","$text33"],-expires=>'Thursday,31-Dep-2024 00:00:00 JST'); print <<"IO"; Content-type:text/html Set-Cookie:$NewCookie1 Set-Cookie:$NewCookie2 Set-Cookie:$NewCookie3 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="../quest/stylesheet.css" > <title>CGI::Cookie</title> </head> <body> <h1>Cookieテストプログラム version1.6.0</h1> <form action="cookie6.cgi" method="post"> <div><div style="float:left;margin-left:10px;margin-bottom:15px;"> <h5>COOKIE SETTING1</h5> NewCookie1{value[0]} : <input type="text" name="text11" size="20" style="margin:5px;width:180px;"><br> NewCookie1{value[1]} : <input type="text" name="text12" size="20" style="margin:5px;width:180px;"><br> NewCookie1{value[2]} : <input type="text" name="text13" size="20" style="margin:5px;width:180px;"><br></div> <div style="float:left;margin-left:10px;margin-bottom:15px;"> <h5>COOKIE SETTING2</h5> NewCookie2{value[0]} : <input type="text" name="text21" size="20" style="margin:5px;width:180px;"><br> NewCookie2{value[1]} : <input type="text" name="text22" size="20" style="margin:5px;width:180px;"><br> NewCookie2{value[2]} : <input type="text" name="text23" size="20" style="margin:5px;width:180px;"><br></div> <div style="float:left;margin-left:10px;margin-bottom:15px;"> <h5>COOKIE SETTING3</h5> NewCookie3{value[0]} : <input type="text" name="text31" size="20" style="margin:5px;width:180px;"><br> NewCookie3{value[1]} : <input type="text" name="text32" size="20" style="margin:5px;width:180px;"><br> NewCookie3{value[2]} : <input type="text" name="text33" size="20" style="margin:5px;width:180px;"><br></div> </div> <br> <input type="submit" value="COOKIE SET" style="width:150px;"> </form></div> <h5>COOKIE NOW</h5> Cookie1 : $ctext11<br> Cookie2 : $ctext21<br> Cookie3 : $ctext31<br> <br> <h5>SET COOKIE</h5> CookieSET1 : $NewCookie1<br> CookieSET2 : $NewCookie2<br> CookieSET3 : $NewCookie3<br> <br> </body> </html> IO exit; #[CODE-SAMPLE]$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$
CGIモジュールを使ってCOOKIEの値をヘッダーにセットにします。次のようにオプションに指定します。 ● print header(-type=>'text/html',-charset=>'UTF-8',-cookie=>$NewCookie); Cookieが複数の場合は次のとおりです。 ● print header(-type=>'text/html',-charset=>'UTF-8',-cookie=>[$NewCookie1,$NewCookie2,$NewCookie3]);
#[CODE-SAMPLE]$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$ #!/usr/bin/perl use CGI qw(:standard); use CGI::Cookie; require 'jcode.pl'; $time=time; #フォームからの入力文字列を得る $text1=param('text1'); $text2=param('text2'); &jcode::convert(*text1,'euc'); &jcode::convert(*text2,'euc'); #COOKIEの値を取り出す %OldCookies=fetch CGI::Cookie; $cookie=$OldCookies{'COOKIE_PROGRAM'}; $ctext1=$cookie->{'value'}->[0]; $ctext2=$cookie->{'value'}->[1]; $ctime=$cookie->{'value'}->[2]; #今回セットするCookieを作成 $NewCookie=new CGI::Cookie(-name=>'COOKIE_PROGRAM',-value=>["$text1","$text2","$time"],-expires=>'Thursday,31-Sep-2018 00:00:00 JST'); #CGIモジュールを使ってヘッダを表示する print header(-type=>'text/html',-charset=>'UTF-8',-cookie=>$NewCookie); print <<"IO"; <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="../quest/stylesheet.css" > <title>CGI::Cookie</title> </head> <body> <h1>Cookieテストプログラム version1.7.0</h1> <form action="cookie7.cgi" method="post"> <div><div style="float:left;margin-left:10px;margin-bottom:15px;"> <h5>COOKIE SETTING</h5> NewCookie1{value[0]} : <input type="text" name="text1" size="20" style="margin:5px;width:180px;"><br> NewCookie1{value[1]} : <input type="text" name="text2" size="20" style="margin:5px;width:180px;"><br> </div> <br style="clear:both;"> <input type="submit" value="COOKIE SET" style="width:150px;"> </form></div><br> <h5>COOKIE SET</h5> NewValues : $text1 / $text2 / $time <br><br> NowValues : $ctext1 / $ctext2 / $ctime <br> </body> </html> IO exit; #[CODE-SAMPLE]$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$
CGI環境変数を得るには%ENVの内容をブラウザに表示させます。ブラウザに表示させるには次の文で%ENVのキーをすべて得て値を表示させます。
@keys=keys %ENV; @key=sort @keys;
#[CODE-SAMPLE]$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$ #/!usr/bin/perl #環境変数一覧を表示する @keys=keys $ENV; #%ENVのキーをすべて得る @keys=sort @keys; #キーをソート print header( -type=>'text/html',-charset=>'UTC-8'); print <<"IO"; <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="../quest/stylesheet.css" > <title>環境変数プログラム</title> </head> <body> <h1>環境変数プログラム version1.0.0</h1> <table border=1> IO #キー順に%ENVの値を表示 foreach $key(@keys){ print <<"IO"; <tr> <td>$key</td> </tr> IO } print <<"IO"; </table> </body></html> IO exit; #[CODE-SAMPLE]$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$