#!/usr/bin/perl use 5.016; use warnings; use Data::Dumper; # 1063982 NB: Checks only T2 for range +\- 0.5C. my ( $cols, $ID, $T1, $Press, $T2, $LastItem); my @cols = ('A16 26.64 68 27.30 4.2', 'A15 26.62 765 2.30 4.3', 'A11 26.62 761 7.31 4.1', 'A11 26.63 763 27.8 4.2', 'A12 26.68 767 27.29 4.3', 'A15 26.62 765 27.30 4.3', 'A15 26.63 763 27.28 4.2', 'A16 26.68 767 2.29 4.3', 'A17 26.64 768 27.30 4.2', 'A18 26.62 761 27.31 41', 'A211 26.73 764 27.39 4.4', 'A22 26.59 760 27.3 4.0', 'A23 26.54 765 27.84 4.1', ); for $cols(@cols) { if ( $cols =~ /^(A\d\d)\s(2\d\.\d\d)\s(7\d\d)\s(2\d\.\d\d)\s(\d\.\d)$/ ) { $ID = $1; $T1 = $2; $Press= $3; $T2 = $4; if ( $T2 < 26.80 ) { $T2 .= " out of range"; } elsif ( $T2 >27.80 ) { $T2 .= " is out of range"; } say "\$T2, $T2 in ID $ID\n"; $LastItem = $5; } elsif ($cols =~ /^(A\d{2,2})\s.*/ ) { $ID = $1; say "In $ID, BAD VALUE(s) within $cols\n"; $ID = ''; } else { say "BAD VALUES somewhere in $cols\n"; } } =head output (errors highlighted): In A16, BAD VALUE(s) within A16 26.64 68 27.30 4.2 /\ In A15, BAD VALUE(s) within A15 26.62 765 2.30 4.3 /\ In A11, BAD VALUE(s) within A11 26.62 761 7.31 4.1 /\ In A11, BAD VALUE(s) within A11 26.63 763 27.8 4.2 /\ $T2, 27.29 in ID A12 $T2, 27.30 in ID A15 $T2, 27.28 in ID A15 In A16, BAD VALUE(s) within A16 26.68 767 2.29 4.3 /\ $T2, 27.30 in ID A17 In A18, BAD VALUE(s) within A18 26.62 761 27.31 41 /\ BAD VALUES somewhere in A211 26.73 764 27.39 4.4 /\ In A22, BAD VALUE(s) within A22 26.59 760 27.3 4.0 $T2, 27.84 is out of range in ID A23 =cut