in reply to Package vs. plain file

You'll come across this in the recommended documentation, but I'd thought that I would mention that in your example:

my $returnvalue = Common->somesub();

you likely really want

my $returnvalue = Common::somesub();

...assuming you want to use modules to package together functions. Common::somesub() is a fully qualified subroutine, Common->somesub() is a class method. Here's a clumsy example of (some of) the differences:

package Foo; sub bar { print join( ',', @_ ) . "\n"; } package Baz; push @ISA => "Foo"; package main; Foo::bar('arg1'); Foo->bar('arg1'); Baz->bar('arg1'); Bar::bar('arg1'); __END__ arg1 Foo,arg1 Baz,arg1 Undefined subroutine &Bar::bar called at - line 9.