I have two subroutines that are have unexpected results. The first is
passed an array ref to a list of file names.
It then calls a subroutine and passes a file name to that subroutine.
When that routine finishes everything in the @files that was passed to
point is changed from a file name to the relevant line matched by the
reg exp in the subroutine point. All the other files that where in the
array are now empty.


sub processdate {
  my $filenames = shift;
  my $sql;
  my @date = split /\./;
  my @files = grep { /_\((\d+)\)_/, ($1 - 1) % 6 > 2 } @$filenames;
  my $date = "$date[2]-$date[0]-$date[1]";

  my %salesdetail = ( date => $date );
  my %pel = ( date => $date,
              company => 'P' );
  my %cfb = ( date => $date,
              company => 'C' );

  foreach ( @files ){

    if ( /_\((\d+)\)_/ ) {
        print "$_\n";
      $salesdetail{ point } += point( \$_ )           if ( ($1 - 1) % 6
== 4 ); # Point Sales
      print "$_\n";

      salesdetail( $_, \%salesdetail )               if ( ($1 - 1) % 6
== 5 ); # Sales Break Down
      salessum   ( $_, \%pel, \%cfb, \%salesdetail ) if ( ($1 - 1) % 6
== 3 ); # Sales Information - Totals
    }
  }

  die;
  $sql =  'INSERT into sales_detail ';
  insertdata( $sql, [\%salesdetail] );

  $sql = 'INSERT into sales';
  insertdata( $sql, [\%pel,\%cfb] );

  #add code to zip files and 
}

sub point {
  my $filename = shift;
  open ( IN, "<$$filename" ) or die "Could not open file $filename
$!\n";
  while ( <IN> ) {
    return formatnum( $1, $2 ) if ( /Point Health
Centers\s+((?:\d+,)?(?:\d+\.)?\d+)(-?)/ );
  }
}


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to