Please critize my scripts and suggest better ways to
accomplish the same task. 

(I know it's a good practice to put use strict in Perl
script but I'm struggling to make my scripts work with
use strict.The script below work fine if I comment out
use strict.)

[EMAIL PROTECTED] /home/sybase/scripts/pl =>
test_load_lcmr.pl 275 2005 06
Global symbol "$isql" requires explicit package name
at ././test_load_lcmr.pl line 54.
Global symbol "$loader" requires explicit package name
at ././test_load_lcmr.pl line 66.
Global symbol "$loaderpswd" requires explicit package
name at ././test_load_lcmr.pl line 66.
Global symbol "$isql" requires explicit package name
at ././test_load_lcmr.pl line 78.
Execution of ././test_load_lcmr.pl aborted due to
compilation errors.


                
____________________________________________________ 
Yahoo! Sports 
Rekindle the Rivalries. Sign up for Fantasy Football 
http://football.fantasysports.yahoo.com
[EMAIL PROTECTED] /home/sybase/scripts/pl => test_load_lcmr.pl 275 2005 06
Global symbol "$isql" requires explicit package name at ././test_load_lcmr.pl 
line 54.
Global symbol "$loader" requires explicit package name at ././test_load_lcmr.pl 
line 66.
Global symbol "$loaderpswd" requires explicit package name at 
././test_load_lcmr.pl line 66.
Global symbol "$isql" requires explicit package name at ././test_load_lcmr.pl 
line 78.
Execution of ././test_load_lcmr.pl aborted due to compilation errors.

#----------------- script name: test_load_lcmr.pl -------------------------- 
#!/usr/bin/perl 
# Purpose: bcp lcmrldr ftp file provided by CPMC into lcmrdb..ldr_stage and 
exec sp to load lcmr
#use strict;
use warnings;
require "/home/sybase/scripts/pl/global.pl";
our $recipients = '[EMAIL PROTECTED]';
our $dockdir ="/ftpsite/as400/glmgr";
#our $isql = "/opt/finance/sybase/OCS-12_0/bin/isql -U$loader -P$loaderpswd 
-w133 "; #now get from global.pl
our $bcp  = '/opt/finance/sybase/OCS-12_0/bin/bcp';
our $company = <$ARGV[0]>;
our $year = <$ARGV[1]>;
our $period = <$ARGV[2]>;
our $server ='THEBRAIN';  # for testing 
our $debug =0;
our $load_file  = 'cpmc_lcmr_'.$year.'_'.$period.'.'.'csv';
our $log_file   = '/home/sybase/scripts/logs/load_lcmr.pl.log';
qx (cp /dev/null $log_file );
#print "\nserver = $server; company = $company; Year = $year; period = $period 
\n";
qx(echo "server = $server; company = $company; Year = $year; period = $period 
\n" >>$log_file);

##### Main Part ##############

if($#ARGV != 2 or $company !~ /^\d{3}$/ or $year !~ /^\d{4}$/ or $period !~ 
/^\d{2}$/){
  print "\nIncorrect arguments. See usage below:\n";
  &Usage;
}
else{
  unless(-f "$dockdir/$load_file"){die qq(Source file "$dockdir/$load_file" not 
found. Script aborted.\n); } 
  &deleteBeforeLoad($company,$year,$period);
  &bcp_in;
  if ($debug ==0){&run_lcm2_post($company,$year,$period)} #end if;
  &notify_mail;
} #end else

###### Sub Routines ###############

sub Usage{
 print "\n********* USAGE ***********\n";
 print "\n$0 Company Year Period\n";
 print "Company: 3 digits required (275)\n";
 print "Year   : 4 digits required (2005)\n"; 
 print "Period : 2 digits required (06)\n"; 
 print "\n**************************\n";
 exit;
} #end sub Usage

sub deleteBeforeLoad{
  print "---Delete staging table before bcp in \n";
  qx($isql -S$server<<EOF>> $log_file
select getdate()
go
exec lcmrDB..delete_LDR_Stage $_[0],$_[1],$_[2]
go
EOF
);
&check_error;
} #end sub delete

sub bcp_in{
  print "---Start bcp in \n";
  qx($bcp lcmrDB..LDR_Stage in $dockdir/$load_file -c -U$loader -S$server 
-P$loaderpswd -t',' >>$log_file  );
  my $count_load_file = qx(wc -l $dockdir/$load_file | cut 
-d$dockdir/$load_file -f1 );
  qx(echo "\nNumber of rows count from the source file: " >>$log_file);
  qx(wc -l $dockdir/$load_file >> $log_file);
  my $row_copy = qx(egrep "rows copied" $log_file | cut -drows -f1);
  print "\tNumber of rows frm src file = $count_load_file \n";
  print "\tNumber of rows bcp in       = $row_copy \n";
  &check_error;
}#end bcp_in

sub run_lcm2_post{
  print "---Exec store procedure lcm2_post \n";
  qx($isql -S$server<<EOF>>$log_file
select getdate()
go
--exec lcmrdb..lcm2_post [EMAIL PROTECTED] = $_[0],[EMAIL PROTECTED] = $_[1], 
[EMAIL PROTECTED] = $_[2] 
exec lcmrdb..lcm2_post $_[0],$_[1], $_[2] 
go
select getdate()
go
);
&check_error;
}#end sub run

sub check_error{
   my $checkerror =qx(egrep 
"Msg|msg|Message|error|Error|ERROR|fail|Unable|unable" $log_file);
   if ($checkerror){ $debug +=1; print "\tErrors Found here!  \n"; }
}#end sub

sub  notify_mail{
  print "---Send notification\n";
  if ($debug ==0){
     print "\nLoad completed Succesfully!\n";
     qx(mail -s "$0 Completed Successfully" $recipients < $log_file); 
  }#end if
  else {
     print "\n\t$0 completed with Errors\n";
     qx(mail -s "$0 Completed with Errors" $recipients < $log_file);
  }#end else
} #end sub



#------------Script Name global.pl ------------------------
#!/usr/local/bin/perl 
#  Global Stuffs
use strict;
use warnings;
our $loader = 'loader';
our $loaderpswd =qx(egrep LOADER /home/sybase/tranl/pl/.sysspec | cut -d= -f2); 
chomp($loaderpswd);
our $isql = "/opt/finance/sybase/OCS-12_0/bin/isql -U$loader -P$loaderpswd 
-w133 ";
our $bcp  = '/opt/finance/sybase/OCS-12_0/bin/bcp';

-- 
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