On Fri, 2004-08-13 at 16:51, Errin Larsen wrote:
> um, can anyone explain the 'print' function below to me?
> 
> specifically ... this:
> 
>   'print "@F[0,5]"'

The -a signal splits the input lines and stores the resulting elements
in @F

Example:

perl -nae 'print "$F[1]\n"' file.txt

where file.txt contains

one two three
four five six

prints:

two
five

Also, although this splitting on spaces, you can also use the -F signal
to define what you're splitting in.

See `perldoc perlrun`

HTH,

jac

PS:

Oh, print "@F[0,5]", of course, prints the first six elements of @F, and
since they're between double quotes, they're joined with whatever is in
$" (usually a space)

> How do I use this idea in a script instead of a command line?  also,
> how is the input getting into this function?  I mean, I understand $_
> and all, but on a command line, are we piping to that command?  what's
> with the '@F'?
> 
> Thanks for the help!
> 
> --Errin
> 
> 
> On Fri, 13 Aug 2004 09:52:04 -0400, [EMAIL PROTECTED]
> <[EMAIL PROTECTED]> wrote:
> > Thanks too all who passed some knowledge on, but I ended up using :
> > 
> >          while (<D>) {
> > 
> >                 ## look for 9840S and ebexpire
> >                 ## declare OFS = tab
> >                 ## tell split to split on IRS 0,1&5. very similar to awk
> > print $
> > 
> >                 if (($_ =~ /9840S/) && ($_ =~ /ebexpire, ebexpire/ )) {
> >                          local $, = "\t";
> >                         print FOO +(split)[0,1,5], $/;
> >                         #print +(split)[0,1,5], $/;
> > 
> > Derek B. Smith
> > OhioHealth IT
> > UNIX / TSM / EDM Teams
> > 614-566-4145
> > 
> > "John W. Krahn" <[EMAIL PROTECTED]>
> > 08/13/2004 08:51 AM
> > 
> >         To:     Perl Beginners <[EMAIL PROTECTED]>
> >         cc:
> >         Subject:        Re: awk like question
> > 
> > [EMAIL PROTECTED] wrote:
> > > All,
> > 
> > Hello,
> > 
> > > wasn't sure if this was received b/c I got a reurne to sender error.
> > >
> > >
> > > How can I print certain fields delimited by ' '?
> > > In awk I would write awk '{print $1, $6}' filename
> > 
> > The Perl equivalent of that is:
> > 
> > perl -lane 'print "@F[0,5]"'
> > 
> > > Here is an out file that I want to grab data from :
> > >
> > > 04/29/04 11:00:28 [  6687:ebexpire, [EMAIL PROTECTED] E00796   9840S  537
> > 
> > > 2B0234233543E6A4
> > > 04/29/04 11:00:28 [  6687:ebexpire, [EMAIL PROTECTED] E00830   9840S  571
> > 
> > > D402325A8345ABDE
> > > 04/29/04 11:00:28 [  6687:ebexpire, [EMAIL PROTECTED] E00066   9840S  127
> > 
> > > 5202333193B75CBB
> > > 04/29/04 11:00:28 [  6687:ebexpire, [EMAIL PROTECTED] E00501   9840S  168
> > 
> > > 4B0233BABA5813F6
> > >
> > > I want fields one two and six or the date, time and E string.
> > > Does it matter whether I use a foreach or a while (<filehandle>)  ?
> > 
> > You could write that in Perl as:
> > 
> > perl -lane 'print "@F[0,1,5]"'
> > 
> > John
> > --
> > use Perl;
> > program
> > fulfillment
> > 
> > --
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > <http://learn.perl.org/> <http://learn.perl.org/first-response>
> > 
> >
-- 
José Alves de Castro <[EMAIL PROTECTED]>
  http://natura.di.uminho.pt/~jac

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to