複数のCSSをまとめるApacheのハンドラ

ふと思いたって適当に書いてみました。
小さく分割されたバラバラなcssファイルを、1つのファイルに連結して出力します。更新日時を見て、分割ファイルのいずれかが更新されてたら、連結ファイルを書き換えます。(ついでにminifyもカマしてみてますがこれはどうかな?)
もちろん開発環境向けなわけですが、本番環境にはそのまま連結ファイルを上げればいいってことで。
今のとこ、configでディレクトリを指定してその下のcssファイルを全部読むって感じになってるんだけど、これだと結局1種類しかできないので素敵じゃないかもと思うので、どうしようか考え中です。

package Apache::ConcatCSS;
use strict;
use Apache::Constants qw(:common);
use Apache::Log ();
use CSS::Squish;
use CSS::Minifier qw(minify);

sub handler {
    my $r = shift;
    return DECLINED unless $r->content_type() eq 'text/css';

    my $log = $r->server->log;

    my $file  = $r->filename;
    my $dir   = $r->dir_config('CSSBaseDirectory');
    my @files = <$dir/*.css>;

    return DECLINED
        if ( -e $r->finfo && !if_modified( ( stat _ )[9], @files ) );

    my $squished = CSS::Squish->concatenate(@files);
    my $minified = minify( input => $squished );

    open my $out, '>', $file or return SERVER_ERROR;
    print $out $minified;
    close $out;

    $r->send_http_header();
    $r->print($minified);
    return OK;
}

sub if_modified {
    my $mtime = shift;
    for my $css (@_) {
        return 1 if $mtime < ( stat $css )[9];
    }
    return;
}

1;

__END__

=head1 NAME

Apache::ConcatCSS

=head1 SYNOPSIS

  # in httpd.conf
  <Location /css>
      SetHandler perl-script
      PerlHandler Apache::ConcatCSS
      PerlSetVar CSSBaseDirectory /path/to/css_directory
  </Location>

=head1 DESCRIPTION

=head1 METHODS

=head1 AUTHOR

Hiroaki Yoshida E<lt>yoshidaster at gmail.comE<gt>

=head1 SEE ALSO

L<CSS::Minifier>
L<CSS::Squish>

=cut