#!/usr/bin/perl use strict; use warnings; # 1055276 (see also my splitTOscalars.pl) # OP valid: $dt (AKA 'name')is alpha , datefield using slashes, balancedue field is numeric # second post as AM: split problems my ($dt, $account, $baldue); while () { chomp; ($dt, $account, $baldue) = split/\t/; # was: split("\t"); if ($dt =~ /[A-Z]+/i && $account =~ /^[\d\/]+$/ && $baldue =~ /^[\d.,]+$/) { print "\n VALID per OP: \$dt: $dt | \$account: $account | \$baldue: $baldue \n\n"; }elsif ($dt =~ /[a-z]+/) { print "Invalid: $dt -|- $account -|- $baldue \n"; }else { print "\nValid per #1055280 \$dt, \$account, \$baldue: $dt, $account, $baldue\n"; } } =head OUTPUT Valid per #1055280 $dt, $account, $baldue: 4-11-13, 273.13, 273.13 Valid per #1055280 $dt, $account, $baldue: 20130512, 11.17, 36.14 Valid per #1055280 $dt, $account, $baldue: 09222013, 2479.00, 6481.16 VALID per OP: $dt: xyz | $account: 09/30/2013 | $baldue: 500 Invalid: abc -|- 09/30/2013 -|- YYN Invalid: del -|- hfhfh -|- 200 =cut __DATA__ 4-11-13 273.13 273.13 20130512 11.17 36.14 09222013 2479.00 6481.16 xyz 09/30/2013 500 abc 09/30/2013 YYN del hfhfh 200