[Chicago-talk] Q on '-n'
Jay Strauss
me at heyjay.com
Tue Sep 16 08:00:10 CDT 2003
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
>
>
More information about the Chicago-talk
mailing list