Hi, I am new to using Perl to parse a file. What I am trying to do is parse a file that is made of online orders. I have written some code using for and if statements that will go through the file line by line and using regex I try to match the information with the variables so that I can write it to a MySQL database. This works fine as long as each order has their information where it is supposed to be? Is there an easier way of doing this? I get half way through processing the file and the arrays turn to jibberish! I have included my script if it helps any. TIA
Trevor open(Order, "<c:\\maverick\\test2.TXT") || die ("Cannot find the file test2.TXT"); flock(Order,2); @miva_orders=<Order>; @order_number = (); @date = (); @time = (); @bill_first_name = (); @bill_last_name = (); @ship_first_name = (); @ship_last_name = (); @emai_address = (); @phone_number = (); @phone_number2 = (); @business_name = (); @sold_to_street = (); @bill_to_street = (); @bill_to_city = (); @bill_to_state = (); @bill_to_zip = (); @ship_to_city = (); @ship_to_state = (); @ship_to_zip = (); @contry = (); @code = (); @name = (); @quantity = (); @price_each = (); @shipping_method = (); @shipping_amount = (); #shift @miva_orders; #shift @miva_orders; print "Arrya[0] is: $miva_orders[0]\n"; [EMAIL PROTECTED]; print "$length\n"; for ($n=1; $n<$length; $n=$n+26) { print "N : $n and value of $miva_orders[$n]\n"; if ($order_number[$n] eq ""){ if ($miva_orders[$n+3] =~ /^Order Number\s?:\s?(\d+)/) { #$order_number = $1; $order_number[$n] = $1; #push(@order_number,$order_number); print "Order number is $order_number[$n]\n"; } } if ($date[$n] eq "" && $time[$n] eq "" ) { if ($miva_orders[$n+4] =~ m/Placed\s+: (\d+\/\d+\/\d+)\s(\d+:\d+:\d+)/) { $date[$n] = $1; $time[$n] = $2; print "Date and Time is $1 $2\n"; } } if ($bill_first_name[$n] eq "" && $bill_last_name[$n] eq "" && $ship_first_name[$n] eq "" && $ship_last_name[$n] eq "") { if($miva_orders[$n+7] =~ /^(\w+)\s(\w+)\s+(\w+)?\s?(\w+)?/) { $ship_first_name[$n] = $1; $ship_last_name[$n] = $2; $bill_first_name[$n] = $3; $bill_last_name[$n] = $4; print "Ship First name : $ship_first_name[$n]\n"; print "Ship Last name : $ship_last_name[$n]\n"; print "Bill Last name : $bill_first_name[$n] \n"; print "Bill Last name : $bill_last_name[$n] \n"; } } if ($email_address[$n] eq "") { if($miva_orders[$n+8]=~ /([EMAIL PROTECTED])/) { $email_address[$n] = $1; print "Email address : $email_address[$n]\n"; } } if( $phone_number[$n] eq "") { if($miva_orders[$n+9] =~ /(\d{3}\s?-?\d{3}\s?-?\d{4})/) { $phone_number[$n]=$1; print "Phone Number $phone_number[$n]\n"; } } if( $phone_number2[$n] eq "") { if($miva_orders[$n+10] =~ / \s+(\d{3}\s?-?\d{3}\s?-?\d{4})? / ) { $phone_number2[$n]=$1; print "Phone Number2 $phone_number2[$n]\n"; } } if($business_name[$n] eq "" ) { if ($miva_orders[$n+11] =~ /^\s+(\w+.*)/) { $business_name[$n] = $1; $business_name[$n] =~ s/^\s+//; print "Business Name $business_name[$n]\n"; } } if ($sold_to_street[$n] eq "") { if($miva_orders[$n+12] =~ /(.*)\s{2,}/) { $sold_to_street[$n] = $1; print "Sold To Street :$sold_to_street[$n] \n"; } } if ($bill_to_street[$n] eq "") { if($miva_orders[$n+12] =~ /\s{2,}(.*)/) { $bill_to_street[$n] = $1; print "Bill To Street :$bill_to_street[$n] \n"; } } if ($bill_to_city[$n] eq "" && $bill_to_state[$n] eq "" && $bill_to_zip[$n] eq "") { if ($miva_orders[$n+13] =~ /(\w+\s?\w+)\s?(.{2})\s?(\d{5}(\W)?(\d{4})?)/) { $bill_to_city[$n] = $1; $bill_to_state[$n] = $2; $bill_to_zip[$n] = $3; print "Bill to City, State and Zip : $bill_to_city[$n] $bill_to_state[$n] $bill_to_zip[$n] \n"; } } if ($ship_to_city[$n] eq "" && $ship_to_state[$n] eq "" && $ship_to_zip[$n] eq "") { if($miva_orders[$n+13] =~ /\s{2,}(\w+\s?\w+)\s?(\w{2})\s?(\d{5}(\W)?(\d{4})?)/) { $ship_to_city[$n] = $1; $ship_to_state[$n] = $2; $ship_to_zip[$n] = $3; print "Ship TO City, State and Zip : $ship_to_city[$n] $ship_to_state[$n] $ship_to_zip[$n] \n"; } } if ($bill_to_country[$n] eq "") { if ($miva_orders[$n+14] =~ /(\w+)/) { $bill_to_country[$n] = $1; print "Country $bill_to_country[$n] \n"; } } if ($code[$n] eq "") { if ($miva_orders[$n+18] =~ /(.{1,15})/) { $code[$n] = $1; print "Code : $code[$n]\n"; } } if ($name[$n] eq "") { if ($miva_orders[$n+18] =~ /(\s{2,}.{2,40})/) { $name[$n] = $1; $name[$n] =~ s/^\s+//; print "Name : $name[$n]\n"; } } if ($quantity[$n] eq "") { if ($miva_orders[$n+18] =~ /(\s{2,}\d{1,8})/) { $quantity[$n] = $1; $quantity[$n] =~ s/^\s+//; print "Quantity : $quantity[$n]\n"; } } if ($price_each[$n] eq "") { if ($miva_orders[$n+18] =~ /\$(\d+\.\d+)/) { $price_each[$n] = $1; $price_each[$n] =~ s/^\s+//; print "Price Each : $price_each[$n]\n"; } } if ($shipping_method[$n] eq "" && $shipping_amount[$n] eq "" ) { if ($miva_orders[$n+19] =~ /\s+Shipping:\s+(\w+\s?\w+):\s+\$(\d+\.\d+)/) { $shipping_method[$n] = $1; $shipping_method[$n] =~ s/^\s+//; $shipping_amount[$n] = $2; print "Shipping Method : $shipping_method[$n]\n"; print "Shipping Amount : $shipping_amount[$n]\n"; } } } # for loop flock(order,8); close(order);