while (<>) { /^\s*\[([^]]+)\]/ and push @left, $1; /\[([^]]+)\]\s*$/ and push @right, $1; } print "Left : $_\n" for @left; print "Right : $_\n" for @right;