/usr/local/CPAN/Apache-Emulator/Apache/Emulator/Apache/Table.pm
package Apache::Emulator::Apache::Table;
package Apache::Table;
use strict;
sub new {
my $class = shift;
my $self = {};
tie %{$self}, 'Apache::TableHash';
%$self = @_ if @_;
return bless $self, ref $class || $class;
}
sub set {
my ($self, $header, $value) = @_;
defined $value ? $self->{$header} = $value : delete $self->{$header};
}
sub unset {
my $self = shift;
delete $self->{shift()};
}
sub add {
tied(%{shift()})->add(@_);
}
sub clear {
%{shift()} = ();
}
sub get {
tied(%{shift()})->get(@_);
}
sub merge {
my ($self, $key, $value) = @_;
if (defined $self->{$key}) {
$self->{$key} .= ',' . $value;
} else {
$self->{$key} = "$value";
}
}
sub do {
my ($self, $code) = @_;
while (my ($k, $val) = each %$self) {
for my $v (ref $val ? @$val : $val) {
return unless $code->($k => $v);
}
}
}
1;