http://www.perlmonks.org?node_id=19584

Dungan has asked for the wisdom of the Perl Monks concerning the following question:

Great masters I have worked on this piece of small code for awhile and have started to pull my hair out... soon I will actually look like one of the bald monks. I am trying to parse extended log files into variable that I will then pass to a SQL database. For now the problem is the regex I am using. Here is a sample record:
209.19.170.94 - - [21/Jun/2000:00:06:04 -0400] "GET /ob/html/meet.html + HTTP/1.1" 200 5933 "http://www.stuff.com/ob/" "Mozilla/4.0 (compatib +le; MSIE 5.0; Mac_PowerPC)"
(all one continous line) Here is my code:
#! /usr/bin/perl -w open(FILE, "/logs/000604access.log"); while (<FILE>) { ($client,$identuser,$authuser,$date,$tz,$method,$url,$protocol,$s +tatus,$bytes,$refer,$platform,$extendedinfo) = /^(\S+) ( \S+) (\S+) \[(\S+) (\S+)\] "(\S+) (\S+) (\S+)" (\S+) (\S+) "(\S+)" "(\ +S) (.*?)"$/; ### do some schmacity with variables } close FILE; exit;
my problem is that it tells me all my variable are uninitialized and if I print them they are all null values.