in reply to object method that returns object

mutagen, another point:

You should be using a method call to new, not a straight subroutine call, as it is (or ought to be!) a class method.

my $doc_info = DocumentInfo->new('919');
This passes the class name as $_[0], and will allow inherited constructors to work properly. See perldoc perlboot, perltoot and perlobj for more about how Perl does OO