Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
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
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 avoiding work at the Monastery: (3)
As of 2014-11-27 05:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (180 votes), past polls