Hi Becky,
It would be interesting to know how $string gets its value. It appears you are only getting it one line at a time, which is why you only get the first match. I've modified your program very slightly by adding a loop and it prints out all 3 values from the sample lines you provided.
while (<DATA>) {
if (/\w{1,12}\s+(\d{1,5})\s+[a-zA-Z]{4}/sm){
print $1, "\n";
}
}
__DATA__
BC001593 91 NPSL
BC001593 262 NASS
BC001593 293 NAST
You know your data better than we do, but on the basis of what you've said it looks as though the regex could be simplified or even eliminated through the use of split like so:
while (<DATA>) {
my $pos = (split ' ')[1];
print $pos,"\n";
}
__DATA__
BC001593 91 NPSL
BC001593 262 NASS
BC001593 293 NAST
Just food for thought. This split trick will only work if your value of interest is always the 2nd field on each line.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.