Search code examples
perlinclude

How do I include functions from another file in my Perl script?


This seems like a really simple question but somehow my Google-Fu failed me.

What's the syntax for including functions from other files in Perl? I'm looking for something like C's #include "blah.h"

I saw the option for using Perl modules, but that seems like it'll require a not-insignificant rewrite of my current code.


Solution

  • Use a module. Check out perldoc perlmod and Exporter.

    In file Foo.pm

    package Foo;
    use strict;
    use warnings;
    use Exporter;
    
    our @ISA= qw( Exporter );
    
    # these CAN be exported.
    our @EXPORT_OK = qw( export_me export_me_too );
    
    # these are exported by default.
    our @EXPORT = qw( export_me );
    
    sub export_me {
        # stuff
    }
    
    sub export_me_too {
        # stuff
    }
    
    1;
    

    In your main program:

    use strict;
    use warnings;
    
    use Foo;  # import default list of items.
    
    export_me( 1 );
    

    Or to get both functions:

    use strict;
    use warnings;
    
    use Foo qw( export_me export_me_too );  # import listed items
    
    export_me( 1 );
    export_me_too( 1 );
    

    You can also import package variables, but the practice is strongly discouraged.