#! perl use strict; use warnings; while () { / \[ ([^]]+) \] .* \[ ([^]]+) \] .* \[ [^]]+ \] \s+ (.*) /x or next; my ($part1, $part2, $part3) = ($1, $2, $3); print "1: |$part1| 2: |$part2| 3: |$part3|\n"; } __DATA__ [part1-dateA] info - [..part2..] [..part3..] part4 [part1-dateB] log - [..part2..] [..part3..] part4 #### 22:04 >perl 972_SoPW.pl 1: |part1-dateA| 2: |..part2..| 3: |part4| 1: |part1-dateB| 2: |..part2..| 3: |part4| 22:04 >