ラベル perl の投稿を表示しています。 すべての投稿を表示
ラベル perl の投稿を表示しています。 すべての投稿を表示

2009年3月19日木曜日

[perl] CGI.pmでクッキー設定

やりたかったのはこれ。
ーーー
my $cookie1 = $query->cookie( -name =>'id',
-value =>'test',
-expires=>'+1d');
my $cookie2 = $query->cookie( -name =>'pw',
-value =>'test',
-expires=>'+1d');
print "Set-Cookie: $cookie1;\n";
print "Set-Cookie: $cookie2;\n";
print "Location: main.cgi\n\n";
ーーー


以下参考。
http://amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi/free?page=CGI.pm
ーーー

まずクッキーのセットから。以下のコードでCookieヘッダを出力します。

my $cookie = $cgi->cookie(-name   =>'hoge',
-value =>'fuga',
-expires=>'+1h');
print $cgi->header(-cookie=>$cookie);

cookieメソッドは他にも以下のようなオプションを与えることができます。

  • -path(このクッキーが有効になるパスの一部)
  • -dommain(このクッキーが有効になるドメインの一部)
  • -secure(1を指定するとSSLでのみクッキーが使用されます)

また、-valueにはスカラだけでなく配列リファレンス、ハッシュリファレンスをセットすることもできます。

my $cookie=$query->cookie(-name =>'list',
-value=>\@list);

expiresにはクッキーの有効期間を設定します。+10s、+10m、+10h、+10dでそれぞれ10秒後、10分後、10時間後、10日後になります。省略するとセッション限りのクッキーとなります。また、マイナスを指定するとクッキーは削除されます。

クッキーの取得はとても簡単です。

my $cookie = $cgi->cookie(-name=>'hoge');
print $cookie;

2008年9月19日金曜日

[perl] プラグマ

==========================================
プラグマ
・プラグマとは、perlのスクリプトをコンパイルするときに、
   影響を与えるコンパイルオプションのようなものです。
・先頭の文字は、モジュールと違って小文字で始まります。
==========================================
http://d.hatena.ne.jp/perlcodesample/20080107/1211421143

[perl] Prototype mismatch: %s vs %s

エラーメッセージについての言及。
もうちょっと勉強しないとな。。。

==============================
Prototype mismatch: %s vs %s

(S unsafe) 以前異なる関数プロトタイプで宣言または
定義されたサブルーチンが宣言または定義されました。
==============================
http://perldoc.jp/docs/perl/5.6.1/perldiag.pod
 ⇒Prototype mismatchで検索

2008年9月17日水曜日

[Perl] 曜日の取得

曜日の求め方

=============================================
print getwday(2003, 8, 18);

# Zellarの公式で曜日を求める
# 0:日 ... 6:土
sub getwday {
my $year = shift; # 年
my $mon = shift; # 月
my $day = shift; # 日

if ($mon == 1 or $mon == 2) {
$year--;
$mon += 12;
}
my $number = ($year + int($year / 4) - int($year/100) + int($year / 400)
+ int((13 * $mon + 8) / 5) + $day) % 7;

my @list = ('sun.','mon.','the.','wed.','thu.','fri.','sat.');


return @list[$number];
}
=============================================

2008年9月7日日曜日

[Perl] デバックの方法

ずっとPerlではエラー箇所がよくわからなくていやだなぁ、
と思っていたが、普通にブラウザ上でデバックってできるのね。。。

これ知ってたら、これまでの生産性が10倍ぐらい違ってくるよ、たぶん。

■ ブラウザーでのチェック
http://perl.misty.ne.jp/20.html
======================
下記の方法で、ブラウザー上からエラーチェックを行なうことが出来ます。
「BEGIN」 から始まる1行を、Perlのパス指定の下に追加することで、ブラウザーから簡単にチェックを行なえます。
エラーがない場合は、Perl での処理結果がそのまま表示されます。
---
#!/usr/local/bin/perl
BEGIN{ $| = 1; print "Content-type: text/html\n\n"; open(STDERR, ">&STDOUT"); }
---
エラーがある場合には、エラーメッセージが標準エラー出力チャンネル(STDERR) に格納されます。
この標準エラー出力を、HTML出力としてWEBサーバーに渡します。
=======================