my $quoted = qr/" [^"]+ "/x; my $bracketed = qr/\[ [^\]]+ \]/x; my $bare = qr/ \S+ /x; while () { my @logentry = /($quoted|$bracketed|$bare)/g; }