内容へ移動
TechNote
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
現在位置:
start
»
perl
»
cgi
perl:cgi
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== Perl - CGI ====== ===== CGIでUTF8を扱う ===== CGIモジュールとEncodeモジュールを使うとよい。 <sxh perl> #!/usr/bin/perl BEGIN { use File::Basename; chdir dirname($0); } use strict; use warnings; use utf8; use open ":utf8"; use open ":std"; use CGI; use Encode; # 取得したデータをUTF8として扱うためにデコード my $cgi = CGI->new(); foreach my $param ($cgi->param) { my @value = map {Encode::decode("utf8",$_)} $cgi->param($param); $cgi->param($param,@value); } </sxh> これだけでCGIで正常にUTF8が扱えるようになる。\\ CGIモジュールで取得した変数をハッシュにするには、 <sxh perl> my %in = $cgi->Vars; </sxh> たったこれだけでよい。 ===== Cookieの書き込みと読み込み ===== ==== 書き込み ==== <sxh perl> #!/usr/bin/perl BEGIN { use File::Basename; chdir dirname( $0 ); } use strict; use warnings; use utf8; use open ":utf8"; use open ":std"; use CGI::Cookie; my $cookie = CGI::Cookie->new(-name => "識別子", -value => "値", -expires => "+3M"); print "Set-Cookie: $cookie\n"; </sxh> //-expires//は有効期限を設定するもので、//+3M//は三ヶ月間を意味する。 ==== 読み込み ==== <sxh perl> #!/usr/bin/perl BEGIN { use File::Basename; chdir dirname($0); } use strict; use warnings; use utf8; use open ":utf8"; use open ":std"; use CGI::Cookie; my %cookies = fetch CGI::Cookie; my $cookie = $cookies{"識別子"}->value if (exists $cookies{"識別子"}); my $result = Encode::decode("utf8",$cookie); </sxh> 存在しないクッキーを取得しようとすると致命的なエラーとなるため、必ずexistsで存在を確認する。\\ 取得した値に対してUTF-8フラグを立てることも忘れずに。
perl/cgi.txt
· 最終更新: 2018/07/20 13:34 by
taka
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ