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 }
な感じでブロック中でクラス定義してたりする。なぜかは知らない。