--- Paul Johnson <[EMAIL PROTECTED]> wrote:
> On Wed, Jun 25, 2003 at 01:09:41PM -0700, Jeff Westman wrote:
> 
> > Could someone help me please?
> > 
> > I am trying to write a simple script that will take input from the
> command
> > line as well as input from a pipe.
> > 
> > For example, the script should be able to do both of the following:
> > 
> > $ cat someFile | myPerlScript.pl     # from a pipe
> > 
> > and
> > 
> > $ myPerlScript.pl someFile           # from command line
> > 
> > This is what I have (very simple):
> > 
> > #----------------------- (begin) --------------------#
> > #-- myScript.pl --#
> > #
> > #!/bin/perl
> > use warnings;
> > 
> > sub parseFile()
> > {
> >    while (<>) {         ## I tried passing in \*STDIN or \*F but
> >                         ##  had nothing but problems with that
> > 
> >         # do some processing to the file
> >         #  ...
> >         print ". ";     ## just to do something in the loop for now
> >     }
> > }
> > 
> > if (@ARGV) {
> >     $file = shift;
> >     open(F, "< $file") or die "cannot open file $file: $!\n";
> >     parseFile;
> >     close(F);
> > }
> > else {
> >     parseFile;
> > }
> > #----------------------- (end) --------------------#
> 
> You are working far too hard.  Remove most of your code:
> 
> #!/bin/perl
> use warnings;
> 
> while (<>) {
>     # do some processing to the file
>     #  ...
>     print ". ";     ## just to do something in the loop for now
> }
> 
> > What is obvious to one is not always obvious to another.
> 
> Quite.

WAY too simple!  I finally got it to work (see below) but obviously the easy
solution is the best solution!!!

#!/bin/perl
use warnings;

sub parseFile(*)
{
   $fh = shift;
   while (<$fh>) {
        # do some processing to the file
        #  ...
        print ". ";
    }
}

if (@ARGV) {
    $file = shift;
    open(F, "< $file") or die "cannot open file $file: $!\n";
    parseFile(\*F);
    close(F);
}
else {
    parseFile(\*STDIN);
}

Thanks for the help!! 

JW


__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to