[Chicago-talk] Q on '-n'

Jay Strauss me at heyjay.com
Tue Sep 16 22:26:33 CDT 2003


I feel dumb

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 11:05 AM
Subject: Re: [Chicago-talk] Q on '-n'


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