So you have some delimiter between fields in this flat file and you just want to know whether this particular line of input "meets the 255 char" rule of each field or not?
Split on the delimiter or regex into an array (the first arg of split is a regex). Then use that array as input to a grep in a scalar context which will give you a value of 0,1,2,3,4... If the value is 0, then there are no fields >255 and this is a "good line".
while (<IN>)
{
chomp; # needed if not splitting on whitespace
my @fields = split; # default split - splits on whitespace: /\s+/
# otherwise use:
# my @fields = split(/regex_here/, $_);
if ( grep{length($_) >255}@fields )
{
print "BAD LINE: $_\n"; #do what you need here
}
else
{
#...its a "good line" here
}
}
The above code will be extremely performant. Do what you can do before putting the record into the DB.
updated: minor formatting tweak
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.