Gurus,
This was very timely and helpful. I've got another related question,
hence the reply to this. What if I've got a stanza like:
parm : parm1
value : 100
parm : parm2
value : 101
... etc, and I want to keep the name of the parm and the value, and
trash the rest?
Thanks,
Grateful Newbie
Steve Lane wrote:
>
> Peter Lemus wrote:
> > I need to read a huge two column file; I only need the
> > data from the second column; I need to asign it a
> > variable to that column, for example $FILE, how do go
> > about doing this; I appreciate your help.
> >
> > the file looks like this
> >
> > md tony
> > md ariba
> > md arpa
>
> in the spirit of TMTOWTDI...
>
> here's a "verbose" solution:
>
> #!/usr/bin/perl -w
> # two-column <filename>
>
> use strict;
>
> while (<>) {
> # split line on whitespace
> my @words = split; # same as: my @words = split / /; (with
> leading nulls discarded)
> # same as: my @words = split / /, $_;
> # same as: my @words = split /\s+/, $_;
>
> # assign second word to $FILE
> my $FILE = $words[1];
>
> # do whatever with $FILE
> print "i got '$FILE'\n";
> }
>
> usage: two-column file.txt
>
> the -n option will (basically) wrap a "while (<>) { }"
> around the body of the script, to save some space:
>
> #!/usr/bin/perl -wn
> use strict;
>
> my @words = split;
> my $FILE = $words[1];
> print "i got '$FILE'\n";
>
> you can remove @words to get:
>
> #!/usr/bin/perl -wn
> use strict;
>
> my $FILE = (split)[1];
> print "i got '$FILE'\n";
>
> you can autosplit (to the @F array) on whitespace with -a:
>
> #!/usr/bin/perl -wan
> use strict;
>
> my $FILE = $F[1];
> print "i got '$FILE'\n";
>
> and here's a one-liner you can run at the command line:
>
> $ perl -lane 'my $FILE = $F[1]; print "i got $FILE"' file.txt
>
> > I will have a loop going over and reassingn the next
> > name to the same variable.
>
> i'm having trouble parsing this.
> --
> Steve Lane <[EMAIL PROTECTED]>
--
Thanks,
Sean C. Phillips
UNIX Strategic Services
mailto:[EMAIL PROTECTED]
phone: 469-357-4882