package Book::FilterReverse2; use strict; use warnings; use base qw(Apache::Filter); use APR::Brigade (); use APR::Bucket (); use Apache::Const -compile => 'OK'; use APR::Const -compile => ':common'; sub handler : FilterRequestHandler { my($filter, $bb) = @_; my $c = $filter->c; my $bb_ctx = APR::Brigade->new($c->pool, $c->bucket_alloc); while (!$bb->empty) { my $bucket = $bb->first; $bucket->remove; if ($bucket->is_eos) { $bb_ctx->insert_tail($bucket); last; } my $data; my $status = $bucket->read($data); return $status unless $status == APR::SUCCESS; if ($data) { $data = join "", map {scalar(reverse $_), "\n"} split "\n", $data; $bucket = APR::Bucket->new($data); } $bb_ctx->insert_tail($bucket); } my $rv = $filter->next->pass_brigade($bb_ctx); return $rv unless $rv == APR::SUCCESS; Apache::OK; } 1;