I have a Perl program that loads a bunch of report names in a hash (%TITLES). I then read through files in a directory trying to match the report name of the file to the report name in the hash. When I get a hit, I use the reference of the hash hit to pick up an array that tells me on what line of the report I will find certain items. I have it working............Hooray for me :-) But I don't like what I have to do to get it working. Here is a snippet with some explanation to explain what is or isnot happening. Although, I have shown the first of 2 other processing sections ( there is one for $rptid, $edate, $rdate) I have shown only the first. The other two are the same exact structure and only the regex and variable names are different. It is possible that I will process through all sections based on the flags in @values. If I have to adjust the line count to match the flag I was just doing a <FILE>; and assumed (silly me) that $_ would be set. I found that it wasn't so I assigned it. Hope this is clear enough to be of some help. If not I am wearing my asbestos suit today. :-) Looking for a better way..............TIA...................................................MY COMMENTS <SNIP> 152 LINELOOP:while (<FILE>) { read a line from FILE into $_ 153 chomp; 154 if ( $linecnt == 86 ) { # if not found in 20 155 print "*********ERROR**********\n"; 156 print "$file:NO_TITLE_FOUND\n"; 157 print "*********ERROR**********\n\n"; 158 last FILELOOP; # lines....quit! 159 } else { 160 $fname=$file; 161 ($rptname, $rcvdate, $procdate) = split(/\./, $fname); 162 $lookup = $rptname; 163 $rptname =~ tr!d_salgpqt!- \/&\<\>()\'!; 164 165 # We now have enough information to be able to start the lookup for the information 166 # not contained in the header page of the report. 167 # We need to look up the report name in our hash table and see what lines need to be read 168 # for the remaining parameters. 169 170 # Let's check to see if the Title is in our table. If not we need to add it and specify 171 # the proper values. This is an error and must be corrected manually and viprep re-run. 172 173 if (! exists $TITLES{$lookup}) { 174 print ERR "$lookup is not defined in rtitles (or BIGlist)\n"; 175 print "\n\n\n***************************************************\n\n\n"; 176 print "$lookup not found in rtitles (BIGlist) table. It must be added\n"; 177 print "\n\n\n***************************************************\n\n\n"; 178 next FILELOOP; 179 } 180 181 foreach $keytitle (keys %TITLES) { This is my foreach loop to find the Report Titles 182 if ( grep /$keytitle/, $lookup ) { Prior to this I have check to see if the key exists. 183 @values = @{$TITLES{$keytitle}}; 184 $im = $values[0]; 185 $rptid = $values[1]; 186 $edate = $values[3]; 187 $rdate = $values[4]; 188 189 # Check to see if we need to image this file. 190 191 if ($im == 0) { 192 print "LOOKUP: $lookup\n\n"; 193 next FILELOOP; 194 } 195 196 # File needs to be imaged. Now check for parameters that are valid in this report. 197 # 198 # PARM 1: Check for REPORT ID This is 1 of right now 3 sections of code that are very similar 199 # and this is where the ugliness that I am asking about comes 200 201 if ($rptid == 0) { $rptid has either a 0 (the entity doesn't exist in this report) or 202 $rid="NO_RID"; a line #. I may have to adjust the current line number ($linecnt) 203 } else { If I do then I have to do some reading in the file. 204 if ( $linecnt < $rptid ) { 205 until ( $linecnt == $rptid ) { 206 $_ = $look = <FILE>; This is the ugly line. It occurs 2 more times per block. I found 207 $linecnt++; that if I fall through to the } else { and have to adjust my 208 } position in the file that doing a <FILE>; by itself is not 209 $rid = grid($_); resetting $_. 210 } elsif ( $linecnt > $rptid ) { 211 seek (FILE, 0, 0); 212 $linecnt=1; 213 until ($linecnt == $rptid ) { 214 $_ = $look = <FILE>; 215 $linecnt++; 216 } 217 $rid = grid($_); 218 } else { 219 $look = $_; 220 $look =~ /^\s+(\w+-?\w+)/; 221 $rid = $1; 222 # $rid = &grid($_); 223 } 224 } </SNIP> -- ------------------------------------------------------------------------- "They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety." -- Benjamin Franklin ------------------------------------------------------------------------- RRRRR Gary Luther RR RR SAF RR RR UTABEGAS 2500 Broadway RR RR Helena, MT 59602 RRRR [EMAIL PROTECTED] RR RR ULE !! RR RR Visit our website at RR RR http://www.safmt.org
BEGIN:VCARD VERSION:2.1 X-GWTYPE:USER FN:Gary Luther TEL;WORK:0631 ORG:;Computer Center TEL;PREF;FAX:(406) 444-0684 EMAIL;WORK;PREF;NGW:[EMAIL PROTECTED] N:Luther;Gary TITLE:Systems Administrator END:VCARD