On Wed, 4 Feb 2004, Jeff 'japhy' Pinyan wrote: <snip> > > > > foreach $i (@grok) { > > chomp($i); > > > >($item_num,$item_desc,$b1,$b2,$b3,$b4,$cc,$vn,$qoh,$qc,$qor,$bc,$sc,$yp) > >= split(/\|/,$i); > > print FILE > >"$inv|$item_num|$item_desc|$b1|$b2|$b3|$b4|$cc|$vn|$qoh|$qc|$qor|$bc|$it > >em_num|$sc|$yp\n"; > > $inv++; > > } > > Oh good God. Do you know what that for loop is DOING? > > for each element in @grok: > remove the newline > split it on pipes into some variables > print $inv, those variables with pipes in between, and add a newline > > That is terribly insane.
Jeff, The input and output lines are not identical. The output line prefixes $inv at the front and inserts $item_num between $bc and $sc. I don't know why $item_num is repeated. Granted that I think a more efficient construct might be: my ($item_num,$a,$b) = $i =~ /(.*?|)((?:.*?|){11})(.*)/; print LINE "$inv|$item_num|$a|$item_num|$b\n"; I think that I have that right. Well, assuming that the original is correct. -- Maranatha! John McKown -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>