use v5.10; use warnings; my $valid = qr/^[A-Z]\d\d 1?\d \d?\d(\.1)? [0-3]( \d?\d\.\d)+ ?$/; $, = ', '; while () { chomp; tr/ / /s; say /$valid/ ? split : "Error:$_"; }; __DATA__ C31 6 3 2.4 1.5 2.6 C32 2 7 3 1.0 H31 1 1 0 21.0 11.2 5.3 1.4 T11 2 1 0 6.0 1.1 2.2 L06 1 1 0 1.0 3.3 L06 1 4 0 1.1 1.8