http://www.perlmonks.org?node_id=154497

aeshirey has asked for the wisdom of the Perl Monks concerning the following question:

I'm working on some web-based scripts that do a bit of file manipulation. While I can't combine them, I'd like for them to be able to share some of the same functionality.

In the first file I've made, I've reduced the complexity such that it simply calls a subroutine that does the work. All I would need to do now is run this subroutine for the other files, passing a single scalar to the subroutine.

I'm a bit of a newb, so talk of modules and such will be over my head, but what's the best way to share code between different scripts, allowing for the passing of variables?
  • Comment on What's the best way to share code in different files?

Replies are listed 'Best First'.
Re: What's the best way to share code in different files?
by Util (Priest) on Mar 26, 2002 at 22:48 UTC

    Like it or not, modules are the best way. Modules need not be difficult; you probably need only a small fraction of the many options available to a module author. To get started, see tachyon's Simple Module Tutorial, including the other monks' comments at the bottom. If the tutorial is too simple, try perlman:perlmod. If too complex, try my skeleton code below. I have pared it down to the bare essentials for illustration only; it runs correctly, but is missing the seat-belts (use strict) and air-bags (use warnings), so don't take it out of the parking lot!

    Use h2xs -n Common_Code -AX to generate a real module template once you are more comfortable with how a module works.

    # this is in file Common_Code.pm package Common_Code; sub log_debug_message { print "DEBUG: I see ", join(", ", @_), ".\n"; } 1;
    Here's a script which uses it:
    #!/usr/bin/perl use Common_Code; my( $a1, $b2, $c3 ) = qw( red blue green ); Common_Code::log_debug_message( $a1, $b2, $c3 );
    The output:
    DEBUG: I see red, blue, green.