Perl は 1ファイルに複数のパッケージを書けるはず・・・

1クラス1ファイル・・・だったはず、間違っていたらスマソ

違いますよ、と突っ込もうと思ったけど、自信がないので確認(おぃ)。

% cat test.pl
package A;

use strict;
use warnings;

use vars qw($VERSION);
$VERSION = "0.9";

sub new {
    my ($class) = @_;
    return bless {}, $class;
}

sub version {
    my ($self) = @_;
    return (ref $self)->VERSION || "0.1";
}

package B;

use strict;
use warnings;
use base qw(A);

use vars qw($VERSION);
$VERSION = "1.0";

package main;

use strict;
use warnings;

sub say {
    print join(' ', @_), "\n";
}

say(A->new->version);
say(B->new->version);

% perl test.pl
0.9
1.0

ということで、別に1ファイルに1クラス(パッケージ)な訳じゃないですよ!
ちなみに HTTP::Proxyの SYNOPSIS なんかみると、

{
    package FilterPerl;
    use base qw( HTTP::Proxy::BodyFilter );
    # snip
}

な感じでブロック中でクラス定義してたりする。なぜかは知らない。