please cc the list On Fri, 2004-08-13 at 17:21, Errin Larsen wrote: > ok ... let's say I have an array composed of strings like this: > > ## foobar.txt ## > one two three > A B C > yes no maybe > > ## Perl Script ## > #!/usr/bin/perl > use strict; > use warnings; > my @myarray = `cat foobar.txt`; > > and now I want to put the first two words of each line into a hash, so > we'd end up with: > > my %myhash = ( one=>two, A=>B, yes=>no ); > > what's a nice, perl - y way of doing that?
perl -nae '$hash{$F[0]}=$F[1]; END{ # do something with %hash}' That should do the trick > --Errin > > On 13 Aug 2004 16:57:00 +0100, Jose Alves de Castro <[EMAIL PROTECTED]> wrote: > > 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 > > > > > > -- José Alves de Castro <[EMAIL PROTECTED]> http://natura.di.uminho.pt/~jac
signature.asc
Description: This is a digitally signed message part