Author image William Herrera
and 1 contributors


Acme::RemoteINC - Slowest Possible Module Loading


For your SlowCGI pleasure, loads perl modules via FTP from remote sites. Please don thick rubber gloves and consider version and binary XS module compatibility before using. Requires Perl 5.8 or greater.


Who do you want to kid today? A paranoid ISP admin who won't let you load your favorite CPAN module on his system? Yourself, for considering this as a valid solution to a social problem like that one?


 use strict;
 use warnings;
    require Acme::RemoteINC;
    my $rinc = new Acme::RemoteINC(
        host      => '',
        user      => 'anonymous',
        password  => '',
        perl_root => '/usr/lib/perl5/site_perl/5.8.1'

 use DBI;  # load local DBI by default
 use DBD::Esoterica;  # if cannot load locally, will try the FTP method



    my $rinc = new Acme::RemoteINC(
      host      => '',
      user      => 'anonymous',
      password  => '',
      perl_root => [ '/usr/lib/perl5/site_perl', /usr/lib_site_perl/5.8.1 ]
    my $ftp = new Net::FTP;
    my $rinc = Acme::RemoteINC->new(ftp => $ftp);

The new method creates a new Acme::RemoteINC object. Three paired hash entry named arguments are required for new:

host => $hostname

The name of the ftp server.

user => $loginname

Login user name.

password => $pwd

Login password.

  Two paired hash entry named arguments are optional arguments for new:

perl_root => $wdir

Perl module directory name relative to the FTP service root. Defaults to the default ftp service's base working directory. Alternative: may be a reference to an array of such module directories.

ftp => $ftp

When given as an argument, this overrides use of the otherwise required arguments. ftp is then expected to be a Net::FTP object which has already been logged in.

   NOTE: It is advisable that the call to new be done in a BEGIN block. 
   It is also advisable to load Acme::RemoteINC via require in the BEGIN block.


    This internal method is used by the use and require directives after 
    the reference to the Acme::RemoteINC object has been placed in @INC.
    For details, see the perlfunc docs for require.


This code is beyond bugs. Here there be monsters. The entire concept of loading modules via hooks to Net::FTP may well be fatally flawed. Enjoy :).






William Herrera (


Rude noises, questions, feature requests, rolling eye movements, and inquiries regarding the mental state required to upload code this slow are referred to the Acme, Incorporated Perl suggestion box (thanks@dev.null).


  Copyright (C) 2004 William Hererra.  All Rights Reserved.

  This module is free software; you can redistribute it and/or mutilate it
  under the same terms as Perl itself.