while( my $data = ) { $data =~ m[^ ( [\w\s]+ ) : ( [^\x5b]+ ) \x5b ( [^\x5d]+ ) \x5d ]x; my ($first_bit, $last_bit) =( $1, $3 ); my @variable_bits = $2 =~ m[(\w+)[,\s]]g; print "$first_bit: (@variable_bits) [$last_bit]"; }