1 #----------------------------#
2 package PLP::Tie::Headers;
3 #----------------------------#
7 =head1 PLP::Tie::Headers
9 Makes a hash case insensitive, and sets some headers. <_> equals <->, so C<$foo{CONTENT_TYPE}> is
10 the same as C<$foo{'Content-Type'}>.
12 tie %somehash, 'PLP::Tie::Headers';
23 return bless [ # Defaults.
25 'Content-Type' => 'text/html',
26 'X-PLP-Version' => $PLP::VERSION,
29 'content-type' => 'Content-Type',
30 'x-plp-version' => 'X-PLP-Version',
36 my ($self, $key) = @_;
37 return $self->[0]->{ $self->[1]->{_lc $key} };
41 my ($self, $key, $value) = @_;
42 croak 'Can\'t set headers after sending them!' if $PLP::sentheaders;
43 if (defined $self->[1]->{_lc $key}){
44 $key = $self->[1]->{_lc $key};
46 $self->[1]->{lc $key} = $key;
48 return ($self->[0]->{$key} = $value);
52 my ($self, $key) = @_;
53 delete $self->[0]->{$key};
54 return delete $self->[1]->{_lc $key};
63 my ($self, $key) = @_;
64 return exists $self->[1]->{_lc $key};
70 return each %{ $self->[0] }; # Key only, Tie::Hash doc is wrong.
74 return each %{ $_[0]->[0] };