The problem is that Frontend.pm is not a real module because it doesn't have a package. Once you use() it in one index.pl, it will never be loaded again in that process. If you had a package declared, it would still call the import(), which is created by Exporter, and you'd get your subs. There's more about this in the mod_perl docs.