Here is a nice simple example. We read from the DATA file handle but it could just as well be a file handle you open with an open FILE, "<file.txt" or die "Oops $!\n"
while (<DATA>) { ($first) = $_ =~ m/^(\S+)/; print "$first\n"; } __DATA__ This is a line. Another line is here. Here's a line. Line five is this one.
The while iterates over the filehandle assigning each line to $_. The next line is a standard perl idiom to capture a regex match. We match all non whitespace at the begining of the each line. We specify the beginning with the ^ and the non whitespace with the \S the + after \S specifies 1 or more of (and as much as possible)
You can also do this with split. Split returns an array of values so (split/\s/,$_)[0] is the first value when we split $_ on whitespace. Note that in the example I don't bother to specify $_ as this is the default string that split works on.
while (<DATA>) { $first = (split/\s/)[0]; print "$first\n"; }
Getting completely carried away you can also do it using substr and index. Index gets you the postion of the first space and substr gets you the string.
while (<DATA>) { $first = substr $_, 0, index $_, " "; print "$first\n"; }
Hope this helps.
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
In reply to Re: Grabbing first column of text
by tachyon
in thread Grabbing first column of text
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |