X-Git-Url: http://git.shiar.net/gitweb.cgi/perl/plp/.git/blobdiff_plain/693387f6e6cf5efde73b10242253bb38baf1612a..60df7c89bf8eb6f20a41600a6186a990561eb77a:/PLP/Tie/Headers.pm diff --git a/PLP/Tie/Headers.pm b/PLP/Tie/Headers.pm index f6c4319..566b198 100644 --- a/PLP/Tie/Headers.pm +++ b/PLP/Tie/Headers.pm @@ -14,14 +14,8 @@ This module is part of the PLP internals and probably not of much use to others. =cut -sub _lc($) { - local $_ = $_[0]; - tr/_/-/; - return lc; -} - sub TIEHASH { - return bless [ # Defaults. + return bless [ # Defaults { 'Content-Type' => 'text/html', 'X-PLP-Version' => $PLP::VERSION, @@ -35,15 +29,22 @@ sub TIEHASH { sub FETCH { my ($self, $key) = @_; - return $self->[0]->{ $self->[1]->{_lc $key} }; + $key =~ tr/_/-/; + return $self->[0]->{ $self->[1]->{lc $key} }; } sub STORE { my ($self, $key, $value) = @_; - croak 'Can\'t set headers after sending them!' if $PLP::sentheaders; - if (defined $self->[1]->{_lc $key}){ - $key = $self->[1]->{_lc $key}; - }else{ + $key =~ tr/_/-/; + if ($PLP::sentheaders) { + my @caller = caller; + die "Can't set headers after sending them at " . + "$caller[1] line $caller[2].\n(Output started at " . + "$PLP::sentheaders->[0] line $PLP::sentheaders->[1].)\n" + } + if (defined $self->[1]->{lc $key}){ + $key = $self->[1]->{lc $key}; + } else { $self->[1]->{lc $key} = $key; } return ($self->[0]->{$key} = $value); @@ -51,8 +52,9 @@ sub STORE { sub DELETE { my ($self, $key) = @_; + $key =~ tr/_/-/; delete $self->[0]->{$key}; - return delete $self->[1]->{_lc $key}; + return delete $self->[1]->{lc $key}; } sub CLEAR { @@ -62,7 +64,8 @@ sub CLEAR { sub EXISTS { my ($self, $key) = @_; - return exists $self->[1]->{_lc $key}; + $key =~ tr/_/-/; + return exists $self->[1]->{lc $key}; } sub FIRSTKEY {