It is pretty darn rare for people to care about the return value from a 'require'
I used that quite often, as in
use Data::Dumper;
sub DEVEL() { 1 };
# get sample data
my hashref = DEVEL ? require 'sampledata.pl' : do_something_costly();
# later on
if ( DEVEL ) {
open my $fh, 'sampledata.pl' or die "sampledata.pl: $!";
print Dumper($hashref);
}
Also, I use function files for autoloading (function.al) which return an anonymous sub and encapsulate private data in their lexical file scope (see also AutoReloader).
perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'