Not sure if this is what you are looking for, but this is something I wrote to parse some log files while running load tests on DNS servers:
if(m/(([0-9]+)-((?:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))-(
+[0-9]+))\s+((?:0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9].[0-9]{3})
+\s+(.*)\/(\d+.\d+.\d+.\d+)\/($lookingfor)\/(a).*/i)
{
## Notes:
# $1 = Whole Date (DD-MMM-YYYY)
# $2 = Day (DD)
# $3 = Month (MMM as text)
# $4 = Year (YYYY)
# $5 = Time (HH:MM:SS.sss)
# $6 = Queries info stuff (is not used)
# $7 = IP of requesting name server
# $8 = what we look for ($lookingfor variable)
# $9 = type of record (A/MX/CNAME)
}
not awfully complicated, though.