名前

Blosxom::Header::ja - 一意に HTTP ヘッダを指定する

概要

use Blosxom::Header;

my $header = Blosxom::Header->new;

$header->set(
    Status        => '304 Not Modified',
    Last_Modified => 'Wed, 23 Sep 2009 13:36:33 GMT',
);

my $status  = $header->get( 'Status' );
my $bool    = $header->exists( 'ETag' );
my @deleted = $header->delete( qw/Content_Disposition Content_Length/ );

$header->push_cookie( @cookies );
$header->push_p3p( @p3p );

$header->clear;

仕様

ブロッサムは単一の CGI スクリプトとして動作する、 ウェブログ・アプリケーションの一つである。 このアプリケーションは、$header というハッシュのリファレンスをグローバル化する。 $header は古き良き CGI モジュールの header() 関数に渡され、HTTP ヘッダを生成する。

package blosxom;
use CGI;
our $header = { -type => 'text/html' };
# プラグインを読み込む
print CGI::header( $header );

header() は $header のキーについて、大文字と小文字を区別しない。 また、キーの先頭にハイフンを付加するかどうかも任意だ。 他方、ハッシュのキーは大文字と小文字を区別する。 したがって、複数のプラグインが共存するような状況では、一意に $header を操作することができない。

このモジュールは、$header を操作するためのインターフェイスである。 具体的には、キーの大文字と小文字を区別しないハッシュとして実装した。

メソッド

$header = Blosxom::Header->new

Blosxom::Header オブジェクトを作る。

$header->set( $field => $value )
$header->set( $f1 => $v1, $f2 => $v2, ... )

$field で指定したフィールドに、$value を代入する。 フィールド名は大文字と小文字を区別しない。 またハイフンの代わりに、アンダーバーを使うこともできる。

$value は基本的に文字列をとる。 特に、フィールド名として 'Set_Cookie' あるいは 'P3P' を指定したとき、リストのリファレンスをとる。

$header->set( Set_Cookie => [ $cookie1, $cookie2 ] );
$header->set( P3P => [ qw/CAO DSP LAW CURa/ ] );
$value = $header->get( $field )
@values = $header->get( $field )

引数としてフィールド名をとり、文字列を返す。 要素が存在しなければ undef を返す。 また、リスト・コンテキストで、リストを返す。

my @cookie = $header->get( 'Set_Cookie' );
my @p3p    = $header->get( 'P3P' );
$bool = $header->exists( $field )

引数としてフィールド名をとり、要素が存在するとき真を返す。 存在しないとき偽を返す。

@deleted = $header->delete( @fields )

指定したフィールドをすべて削除する。 削除した要素の値を返す。

$header->push_cookie( @cookies )

Set-Cookie ヘッダを追加する。

$header->push_p3p( @p3p )

CGI モジュール固有のパラメータ

以下のメソッドは、引数をつけたとき set()、つけないとき get() として働く。

$header->attachment
$header->charset

文字セットを指定する。

$header->cookie
$header->expires
$header->nph
$header->p3p
$header->status
$header->target
$header->type

メディア・タイプを指定する。

参考文献

CGI

作者

穴澤亮 (anazawa@cpan.org)

著作権

Perl Artistic ライセンスに準ずる。