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; ¬ify_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>