my $r = shift; ... my $content = qq{<HTML><HEAD>... </BODY></HTML> }; if (accepts_gzip($r)) { require Compress::Zlib; $r->header_out('Content-Encoding', 'gzip'); $content = Compress::Zlib::memGzip($content); } ... $r->header_out('Vary', 'accept-encoding'); sub accepts_gzip { # naïve approach my $r = shift; $r->header_in("Accept-Encoding") =~ m|\bgzip\b|i; }