in reply to How to call counter.pl script from another script

You could implement include with perl's require. Just use:

require("counter.pl");
When you use require, the code in the file you specified will be executed immediately. Usually for what you want to do your code would be put into a subroutine, and you would use something like:

require("counter.pl"); insert_counter(); # can also pass arguments to this subroutine

where insert_counter() is the name of the subroutine you defined in counter.pl. You could then pass subroutine arguments to it like the name of referrer script, the database handle, etc.

For more info on subroutines, check out perldoc perlsub. When you need better encapsulation, you'll want to read up on how to create modules.

Update: forgot that perl doesn't have include, and that it instead uses require.

Replies are listed 'Best First'.
Re^2: How to call counter.pl script from another script
by Nik (Initiate) on Feb 22, 2008 at 16:39 UTC
    I'will follow your advice and try to use my first perl module then!

    I understand for the link you gave that in order to use this 'counter.pm' module within my index.pl file i have to use 'use counter.pm' right?

    Here is the code i written inside counter.pm

    package counter; use strict; my ($db, $pagename, $host) = @_; #======== Insert or Update pagecounter appropriately, then display it +========== eval { # Just ignore errors if the record already exists $db->do('INSERT INTO counters (pagename, pagecounter) VALUES (?, 0) +', undef, $pagename); }; $db->do('UPDATE counters SET pagecounter = pagecounter + 1 WHERE pagen +ame = ?', undef, $pagename) unless( $host eq 'Admin' ); my ($counter) = $db->selectrow_array('SELECT pagecounter FROM counters + WHERE pagename = ?', undef, $pagename);
    What i dont know is how to pass the variables $db, $pagename, $host inside the counter.pm module because those 3 variables are a prerequisite for the module to perform its task.

    Also the counter.pm module will have to return the variables $counter back to index.pl script so i can print it in the following line of index.pl

    Please excuse me as this is the first time im trying to use modules.

    ps. Do i need to put the above code in a sub inside counter.pm or creating a sub inside counter.pm isnr neccesary?

      Perhaps you should take a look at Simple Module Tutorial regards creating a module, and calling its functions.

      Martin
      A reply falls below the community's threshold of quality. You may see it by logging in.