my $dbh = DBI->connect($server,$user,$passwd,$dbd, {RaiseError => 1,AutoCommit => 1 }); ^? read the docs again # Prepare the SQL query for execution my $sql = "SELECT $ans_rid, $ans_qcn, $ans_loc FROM ft_int_tbl WHERE $ans_rid is not null"; ^? ^? ^? ^? my $sth = $dbh->prepare($sql) or die "Couldn't prepare statement:$DBI::errstr; stopped"; ^? you set RaiseError, so you'll never get that # Execute the query $sth->execute() or die "Couldn't execute statement: $DBI::errstr; stopped"; ^? same here #open JKLL, ">$an_dt_file" or die "can't open file $ansb_detail_file for write,\n"; # Fetch each row and print it while ( my ($ans_rid, $ans_qcn, $ans_loc) = $sth->fetchrow_array() ) { my ($ansb_cktid, $ansb_mcn, $ansb_soc) = unpack("A3 A3 A3", $_); ^? what do you expect to be in $_ #print JKLL"Field 1: $ansb_cktid Field 2:$ansb_mcn Field 3: $ansb_soc \n"; print "Field 1: $ansb_cktid Field 2:$ansb_mcn Field 3: $ansb_soc \n"; } ==> corrected based on guesses, as I have no idea my $dbh = DBI->connect ($server, $user, $passwd, { RaiseError => 1, PrintError => 1, # Comes in very handy when you are running into trouble ShowErrorStatement => 1, # this too AutoCommit => 1, }); # Prepare the SQL query for execution my $sql = "SELECT ans_rid, ans_qcn, ans_loc FROM ft_int_tbl WHERE ans_rid is not null"; my $sth = $dbh->prepare ($sql); # Execute the query $sth->execute (); #open JKLL, ">$an_dt_file" or die "can't open file $ansb_detail_file for write,\n"; # Fetch each row and print it while (my ($ans_rid, $ans_qcn, $ans_loc) = $sth->fetchrow_array ()) { my ($ansb_cktid, $ansb_mcn, $ansb_soc) = unpack "A3 A3 A3", $ans_loc; print "Field 1: $ansb_cktid Field 2:$ansb_mcn Field 3: $ansb_soc \n"; }