[Chicago-talk] Q on '-n'

Mike Pastore mike at oobak.org
Tue Sep 16 11:05:44 CDT 2003


There is no -o flag. But he wants to have one. :)

On Tue, 16 Sep 2003 08:00:10 -0500, "Jay Strauss" <me at heyjay.com> said:
> what's the -o flag?  I don't see it under perl -h
> 
> Jay
> ----- Original Message ----- 
> From: "Mike Pastore" <mike at oobak.org>
> To: "Chicago.pm chatter" <chicago-talk at mail.pm.org>
> Sent: Tuesday, September 16, 2003 4:53 AM
> Subject: Re: [Chicago-talk] Q on '-n'
> 
> 
> > Hi Walter,
> > 
> > Certainly, you are close! But I might offer some suggestions. To answer
> > your last email first, it is easy enough to check @ARGV in your BEGIN
> > statement:
> > 
> >     BEGIN
> >     {
> >         die "usage: $0 -o <output> <input 1> <input 2> ... <input n>\n" 
> >             unless @ARGV > 2;
> >         ...
> > 
> > Or perhaps check after you trim out your option. I might also recommend
> > the -s switch in this case, as in the following:
> > 
> >     #!/usr/bin/perl -n -s
> > 
> >     BEGIN
> >     {
> >         die "usage: ... \n" unless @ARGV and defined $o;
> > 
> >         open(TEMP, ">>$o") 
> >             or die "Unable to open '$o' for writing: $!\n";
> >     }
> > 
> >     print TEMP; 
> > 
> > There is no need to close any filehandles. Your data is coming from
> > STDIN. You may close TEMP in an END block if you wish, but it is
> > unnecessary.
> > 
> > Regarding style (and your future goal of letting the user specify a
> > directory), consider letting user's shell do all the hard work. For
> > example,
> > 
> >    $ perl -pe';' file1 file2 >> file3
> >    $ perl -ne'print if /foo/' dir1/* > file3
> > 
> > Of course, it all depends on the program you're writing. This may not be
> > a feasible solution to your problem. But I thought I'd mention it,
> > because it might save you time! When writing little scripts like this I
> > prefer to let UNIX do all the grunt work of listing directories and
> > pushing data around, instead of opening file handles left and right.
> > Also, if you use STDOUT and STDERR it gives the user freedom to act on
> > the output as s/he sees fit. FWIW.
> > 
> > --
> > Mike Pastore
> > mike at oobak.org
> > 
> > ----- Original message -----
> > From: "Walter Torres" <walter at torres.ws>
> > To: "Chicago.pm chatter" <chicago-talk at mail.pm.org>
> > Date: Tue, 16 Sep 2003 02:14:39 -0500
> > Subject: [Chicago-talk] Q on '-n'
> > 
> > I'm trying to figure out how to utilize '-n' best.
> > 
> > I have a cmd line...
> > 
> >    myScript.pl file_1.txt file_2.txt -o result.out
> > 
> > I want to cycle through all file[s] given by the cmd line (if it's a
> > path,
> > all the files in that dir, but that's for later) and spit the results
> > (whatever it may be) into the file given via the '-o' parameter.
> > 
> > My test script (see below)
> > 
> > Is this the best way to accomplish this?
> > 
> > Thanks for your help.
> > 
> > Walter
> > 
> > 
> > ==================================================
> > 
> > #!/usr/local/bin/perl -n
> > 
> > BEGIN
> > {
> >    # place entire cmd line into single scalar
> >    $arg = join ' ', @ARGV;
> > 
> >    # split off the inbound file(s) and the result file
> >    ($arg, $outFile) = split '-o', $arg;
> > 
> >    # rebuilt the cmd line
> >    @ARGV = split ' ', $arg;
> > 
> >    # Open given tmp file
> >    open( TEMP, ">>$outFile")
> > or die "No Way! \n$!\n$outFile\n";
> > }
> > 
> > # loop begins here
> > print TEMP "$ARGV: $.\n";
> > 
> > # clode the file when we are done with it
> > close ARGV if eof;
> > 
> > # eof
> > 
> > 
> > _______________________________________________
> > Chicago-talk mailing list
> > Chicago-talk at mail.pm.org
> > http://mail.pm.org/mailman/listinfo/chicago-talk
> > _______________________________________________
> > Chicago-talk mailing list
> > Chicago-talk at mail.pm.org
> > http://mail.pm.org/mailman/listinfo/chicago-talk
> > 
> > 
> 
> _______________________________________________
> Chicago-talk mailing list
> Chicago-talk at mail.pm.org
> http://mail.pm.org/mailman/listinfo/chicago-talk



More information about the Chicago-talk mailing list