Hello,

I've been using the following snippet of code to create a list of files 
(received from external clients) to be processed, interrogate the files for the 
client's id, confirm the id against the database and then rename the files with 
using the client id in a unix environment.

open(FILE_LIST,"ls filename* | grep -v txt|" ) || die "ERROR: Cannot create 
list of files\n" ;

while ($cfile = <FILE_LIST>) {
  chomp $cfile;
  if ( -z $cfile ) {
     rename $cfile, "$cfile.empty.txt";
     print "$cfile is empty\n";
     print "$cfile has been renamed to $cfile.empty.txt\n\n";
  }
  else {
     print "$cfile has data\n";
     my $time = strftime '%m%d%y%H%M%S', localtime;
     open ($char_file, '<', $cfile) or die "Can't open `$cfile': $!\n";
     my $charcount;
     my $char_line=<$char_file>;
     chomp;
     $charcount=substr($char_line,8,1);
     if ( $charcount eq / ) {
        chomp($csv_client_id = `cut -c1-6 $cfile |sort -u`);
        my $sql_command = " SELECT DISTINCT CLIENT_ID ".
                          "   FROM CLIENT_SERVICER ".
                          "  WHERE CSV_CLIENT_ID = \'$csv_client_id\'".
                          "    AND TERMDATE IS NULL ".
                          "    AND TYPE_CODE = 'PAY' ";
        print "Executing <$sql_command>\n"  ;
        ($client_id) = $conn->selectrow_array($sql_command) ;
            if ( ! defined $client_id) {
                print "CLIENT_ID not found on P_DB for $cfile\n\n" ;
            }
            else {
                sleep 1;
                mv "/tmp/$cfile", "/tmp/$cfile.$time.$client_id.txt" or die 
"can't mv file: $!";
                print "$cfile has been renamed to 
/tmp/$cfile.$time.$client_id.txt\n";
            }


Its probably not the best written.  But, it was working well and I thought I 
understood what it was doing through each step as a beginner.  Until, I started 
receiving this error message:

'sort: missing NEWLINE added at end of input file STDIN'

Plus, the client_id variable was becoming:
'^Z
12345'

Instead of:
'12345'

I found some files from a particular client had this ^Z end of file character 
in the file.  I found that if I ran the dos2unix command manually on these 
files and the reran my job and I didn't receive the error.

I found this seems to perform the dos2unix command:

s/\r*$//;

which appears to work well when I pass it the file(s) with the ^Z at the end of 
the file.

So, my question(s) is this:

Am I doing something wrong when I open my list of files to process?

Or

Should I be including the (s/\r*$//;) before I open my list of files to 
process?  
If so, what would be your advice on the best way to attack that?

-- 
Thanks,
Shawn

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to