--- 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]