208.168.76.195 - - [27/Jun/2001:08:04:53 -0400] "GET /core.css HTTP/1.1" 304 - "http://www.progressivevalley.com/" "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)" 217.50.206.61 - - [27/Jun/2001:08:19:54 -0400] "GET / HTTP/1.1" 200 2180 "-" "Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1)" 217.50.206.61 - - [27/Jun/2001:08:19:55 -0400] "GET /core.css HTTP/1.1" 200 146 "http://www.progressivevalley.com/" "Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1)" 217.50.206.61 - - [27/Jun/2001:08:20:00 -0400] "GET /images/morningalttext.gif HTTP/1.1" 200 1424 "http://www.progressivevalley.com/" "Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1)" 217.50.206.61 - - [27/Jun/2001:08:20:00 -0400] "GET /images/logosun.jpg HTTP/1.1" 200 32232 "http://www.progressivevalley.com/" "Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1)" #### m/^([^\s]+) # 1st field \s ([^\s]+) # 2nd \s ([^\s]+) # 3rd \s \[([^\]]+)\] # 4th \s "([^"]+)" # 5th \s ([^\s]+) # etc. \s ([^\s]+) \s ([^\s]+) \s "([^"]+)" /x; or in regular format: m/^([^\s]+)\s([^\s]+)\s([^\s]+)\s\[([^\]]+)\]\s"([^"]+)"\s([^\s]+)\s([^\s]+)\s([^\s]+)\s"([^"]+)"/; Note: if you have any doubts, the following RE was tested on an 18725 line file and successfully parsed all lines.