my @GRD = split /,/; warn "line $.: wrong number of attributes\n" unless @GRD == 6; check($GRD[0], 1, @GRDF1); check($GRD[1], 2, @GRDF2); ... check($GRD[5], 6, @GRDF6); sub check ( my($GRD, $col, $@GRDF) = @_; return if grep { $GRD eq $_ } @GRDF; print "line $.: \"$GRD\" is invalid in column $col\n"; }