my($remote, $ident, $user, $datetime, $req, $status, $size, $referer, $ua)
= m{(\S*) \s+ # remote
(\S*) \s+ # ident
(\S*) \s+ # user
\[(.*?)\] \s+ # datetime
"(.*?)" \s+ # request line
(\S*) \s+ # status
(\S*) \s+ # size
"(.*?)" \s+ # referer
"(.*?)" # user agent
}x;

とでもした後、適当に変形すれば良いだろ。