Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Moving to next iteration of a while loop

by mtmcc (Hermit)
on Sep 24, 2013 at 10:27 UTC ( #1055465=note: print w/ replies, xml ) Need Help??


in reply to Moving to next iteration of a while loop

For what it's worth, and i might be wrong, I suspect your program doesn't actually do what you want it to do. Unless you really do what to only consider every second record?

I've modified your data and fail test a little (in the second record) to deliberately make a fail state, rather than counting out to character 113... This does consider every record, and stops processing that data for the record if the fail condition is met...

#!/usr/bin/perl use strict; use warnings; my @lines; my $status; my $recordTitle; LINE: while(<DATA>) { @lines = split('', $_); $status = 'TEST' if $lines[0] eq 'h'; $recordTitle = $_ if $lines[0] eq 'h'; chomp $recordTitle; if($status eq 'TEST') { if($lines[0] eq 'j') { my $first = substr $_, 37, 20; my $second = substr $_, 67, 3; print STDERR "\nName: $first\tRECORD: $recordT +itle\t ABICODE: $second\n"; } if($lines[0] eq 'k') { my $qstatus = substr $_, 4, 9; if($qstatus eq "TEST FAIL") { print STDERR "FAIL\n"; $status = 'FAIL' } } if(($lines[0] eq 'E') || ($lines[0] eq 'G')) { print STDERR "$_"; } } } __DATA__ h132BIK2 u3*** TEST DATA *** u3*** COMMENT AREA FOR TEST DATA *** j1000010017 6790194100109201301092013Test Data N PW09-3PY248 +018BIK20 k10 2R 1 0045.1011N01010215.820012.220006.0000000 0250M 1I +nsured Only NYY01N00000.00N00000.00Y00000. +00 000215.82000012.22000006.00 q0215.820215.820215.820215.820215.820000000000000000000002500250025002 +500250YY00000 01000215.82000215.82000215.82000215.82000215.82 l02001 0400000000 +0000000000000000000000000000000000000000 a000.00000.00000.0000 E99HEADER|004|001| E99INSSCH|248| E99POLCOM|3||CAP01|66|3301R7435459||||| E99INSFAC2|MSRA01_1||||||"LNI10708"| G3301R7435459:LNI10708 yIIDD0043.160019.0110018.9909M0000.000010.000233.08N0017.270023.500000 +43.16000019.01000018.99000000.00000010.00000233.08000017.27 h216BIK0 u3*** TEST DATA *** u3*** COMMENT AREA FOR TEST DATA *** pMU76 Nov 2010 A B C D E F G H + I J L + + 0000000000 j1000010017 6790194100109201301092013Test Data M PW09-3PY248 +005BIK00 k10 TEST FAIL 2R 1 0045.1011N01010217.190012.290006.000000 +0 0250M 1Insured Only NYY01N00000.00N00000 +.00Y00000.00 000217.19000012.29000006.00 q0217.190217.190217.190217.190217.190000000000000000000002500250025002 +500250YY00000 01000217.19000217.19000217.19000217.19000217.19 l02001 0400000000 +0000000000000000000000000000000000000000 a000.00000.00000.0000 E99HEADER|004|001| E99INSSCH|248| E99POLCOM|3||CAP01|66|3301R7435459||||| E99INSFAC2|MSRA01_1||||||"LNI10708"| G3301R7435459:LNI10708 yIIDD0043.440019.1410019.1109M0000.000010.000234.57N0017.380023.500000 +43.44000019.14000019.11000000.00000010.00000234.57000017.38 h217BIK1 u3*** TEST DATA *** u3*** COMMENT AREA FOR TEST DATA *** pMU76 Nov 2010 A B C D E F G H + I J L + 0000000000 j1000010017 6790194100109201301092013Test Data L PW09-3PY248 +006BIK10 k10 2R 1 0045.1011N01010222.940012.620006.0000000 0250M 1I +nsured Only NYY01N00000.00N00000.00Y00000. +00 000222.94000012.62000006.00 q0222.940222.940222.940222.940222.940000000000000000000002500250025002 +500250YY00000 01000222.94000222.94000222.94000222.94000222.94 l02001 0400000000 +0000000000000000000000000000000000000000 a000.00000.00000.0000 E99HEADER|004|001| E99INSSCH|248| E99POLCOM|3||CAP01|66|3301R7435459||||| E99INSFAC2|MSRA01_1||||||"LNI10708"| G3301R7435459:LNI10708 yIIDD0044.590019.6110019.6209M0000.000010.000240.78N0017.840023.500000 +44.59000019.61000019.62000000.00000010.00000240.78000017.84

If you really do want to check only every second record, that's a different story...

I hope that helps!


Comment on Re: Moving to next iteration of a while loop
Download Code
Replies are listed 'Best First'.
Re^2: Moving to next iteration of a while loop
by Jalcock501 (Sexton) on Sep 24, 2013 at 13:31 UTC
    Thanks I hadn't considered that I was missing every 2nd record when I check against the data you were right, although I'm sure that's no surprise to your. Thanks for all your help and this is working perfectly now.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1055465]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (7)
As of 2015-07-08 08:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (96 votes), past polls