in reply to packages within packages
use Foo::Bar; will go looking for a file named Foo/Bar.pm in @INC, so you need to either split up your exceptions into separate files or to always use RemoteException;, if your file is called RemoteException.pm.