in reply to routine as subroutine and on command line

Your original command line was
cat some_file_holding3numbers.txt | avg_routines.pl (+some way of spe +cifying avg3())> avg.txt
The more usual way of forming that is
perl -w avg_routines.pl (+some way of specifying avg3()) <some_file_ho +lding3numbers.txt >avg.txt
That aside, if the routine you wanted to use was inside the existing script, you could name the routine on the command line then use
my $Routine = shift; # Get routine name from cmd line &{ $Routine }; # Call named routine
to actually run it (I haven't tried this code -- this is just something to get you pointed in the right direction). This routine would then read input from the command line via the diamond operator while (<>), average the three numbers and output the average using print.

If the code's in another module, you'll have to include the module name with the routine name, and either use it within your script or bring it in using the -M command line argument for Perl.

This sounds like an awfully complicated way to do something fairly simple. What problem are you really trying to solve?

--t. alex

"Of course, you realize that this means war." -- Bugs Bunny.

Replies are listed 'Best First'.
Re: Re: routine as subroutine and on command line
by count0 (Friar) on Jan 18, 2002 at 20:23 UTC
    I'd just like to shout out my strong reccomendation against using symbolic references (or typeglobs in this fashion)! =)

    It has been my experience that code like this quickly becomes less than maintainable.
    If one were to take this approach (as opposed to modules), a dispatch table would be much more desirable.