ajguitarmaniac has asked for the wisdom of the Perl Monks concerning the following question:
Namaste Monks!!
Here's a script that I've written which works like magic on a Linux or Unix machine. However when run on a windows machine a few errors and warning messages are thrown. Please let me know what the possible reasons for these problems cound be so the I'd be able to make the script error-free on windows.
#!usr/perl/bin -w use warnings; use strict; use diagnostics; use POSIX; ################################## #Global variable declarations ################################## my $file_431_inp = "kwd_431.txt"; my $file_471_out = "kwd_471.txt"; my $file_471_final_out = "MMS_KWD_4.71_CONVERTED.txt"; my $val; my $sbsb_id_431; my $sbsbid; my $i = 0; my $j = 0; my $sbsb_id_431_cnt = 0; my $sbsb_loop_cnt_471 = 0; my $sbsb_loop_cnt_471_act = 0; my $remainder = 0; my $eof = '@pRECTYPE="LEOF"'; my @file_431_arr = (); my @file_471_org_arr = (); my @file_471_upd_arr = (); my @file_471_fin_arr = (); my @file_sbsb_upd_arr = (); my @eof_arr = (); my @temp = (); ################################################################## +########### #No of Records / Subscriber(SBSB)loops in the Input Facets 4.31 KW +D file ################################################################## +########### open(INPFILE, "<$file_431_inp") || die ("Could not read the file") +; @file_431_arr = <INPFILE>; close(INPFILE); for ($i=0;$i<$#file_431_arr;$i++){ if ($file_431_arr[$i] =~/(^\@pRECTYPE="SBSB")(\S*)/){ if ($file_431_arr[$i] =~/(\@pSBSB_ID=")(\d{9})/){ $sbsb_id_431 = $2; $sbsb_id_431_cnt = $sbsb_id_431_cnt + 1; } } } print strftime ("%Y-%m-%d %H:%M:%S",localtime)." :: Number of Reco +rds / Subscriber(SBSB)loops in the Input Facets 4.31 KWD file is : $s +bsb_id_431_cnt\n\n"; ################################################################## +########## #Getting user Input for number of desired Duplicates in the output + 4.71 file ################################################################## +########## print strftime ("%Y-%m-%d %H:%M:%S",localtime)." :: Enter the numb +er of Records / Subscriber(SBSB)loops desired in the output KWD 4.71 +file.To obtain the most accurate results enter a value which is a mul +tiple of $sbsb_id_431_cnt\n\n"; $val = <STDIN>; $sbsb_loop_cnt_471 = int ($val / $sbsb_id_431_cnt); $remainder = ($val % $sbsb_id_431_cnt); $sbsb_loop_cnt_471_act = ($val - $remainder); print strftime ("%Y-%m-%d %H:%M:%S",localtime)." :: Creating outpu +t Facets 4.71 MMS KWD file with $sbsb_loop_cnt_471_act Records / Subs +criber(SBSB)loops\n\n"; ################################################################## +########## # Duplicating the contents of the Input Facets 4.31 KWD file ################################################################## +########## open(INFILE, "<$file_431_inp") || die ("Could not read the file"); my @file_431_org_arr = <INFILE>; close(INFILE); for ($j=0; $j<$sbsb_loop_cnt_471; $j++){ push (@file_471_org_arr,(@file_431_org_arr)); } open(OUTFILE, "+>$file_471_out") || die ("Could not open the file +in write mode"); print OUTFILE (@file_471_org_arr); close(OUTFILE); print strftime ("%Y-%m-%d %H:%M:%S",localtime)." :: $sbsb_loop_cnt +_471 duplicates of the input 4.31 KWD file successfully created with +a total record count of $sbsb_loop_cnt_471_act\n\n"; ################################################################## +########### # Implementing 4.71 changes, printing the WMDS_SEQ_NO segments to +new lines ################################################################## +########### open(UPDFILE, "<$file_471_out") || die ("Could not read the file") +; open(SBSBUPDFILE, "+>$file_471_final_out") || die ("Could not open + the file in append mode"); print strftime ("%Y-%m-%d %H:%M:%S",localtime)." :: 4.71 changes i +mplementation initiated\n\n"; foreach (<UPDFILE>){ if ($_ =~ /^(\@pRECTYPE=\"SBSB\")(.*)(\@pWMDS_SEQ_NO)(1)(= +\d{1})(.*)(\@pWMDS_SEQ_NO)(2)(=\d{1})(.*)(\@pWMDS_SEQ_NO)(3)(=\d{1})( +\,)(.*)$/){ print SBSBUPDFILE "$1$2$15\n"; push (@temp, $1); push (@temp, $2); push (@temp, $3); push (@temp, $4); push (@temp, $5); push (@temp, $6); push (@temp, $7); push (@temp, $8); push (@temp, $9); push (@temp, $10); push (@temp, $11); push (@temp, $12); push (@temp, $13); push (@temp, $14); push (@temp, $15); } elsif ($_ =~ /^\@pRECTYPE=\"MEME\"/){ print SBSBUPDFILE $_; if ($temp[4] ne '=0'){ print SBSBUPDFILE "\@pRECTYPE=\"MEWM\"\,\@pMEWM_UP +DATE_CD=\"AP\"\,$temp[2]$temp[4]\,\@pMEWM_EFF_DT=\"01/01/1900\"\,\@pM +EWM_TERM_DT=\"12/31/9999\"\,\@pMEWM_MCTR_TRSN=\" \"\n"; } if ($temp[8] ne '=0'){ print SBSBUPDFILE "\@pRECTYPE=\"MEWM\"\,\@pMEWM_UP +DATE_CD=\"AP\"\,$temp[6]$temp[8]\,\@pMEWM_EFF_DT=\"01/01/1900\"\,\@pM +EWM_TERM_DT=\"12/31/9999\"\,\@pMEWM_MCTR_TRSN=\" \"\n"; } if ($temp[12] ne '=0'){ print SBSBUPDFILE "\@pRECTYPE=\"MEWM\"\,\@pMEWM_UP +DATE_CD=\"AP\"\,$temp[10]$temp[12]\,\@pMEWM_EFF_DT=\"01/01/1900\"\,\@ +pMEWM_TERM_DT=\"12/31/9999\"\,\@pMEWM_MCTR_TRSN=\" \"\n"; } } else{ print SBSBUPDFILE $_; } } close(UPDFILE); close(SBSBUPDFILE); print strftime ("%Y-%m-%d %H:%M:%S",localtime)." :: 4.71 changes i +mplemented successfully\n\n"; ################################################################## +########### # Generating unique SBSB IDs ################################################################## +########### print strftime ("%Y-%m-%d %H:%M:%S",localtime)." :: Generation of +unique SBSB IDs initiated\n\n"; open(SBSBUPDFILE, "<$file_471_final_out") || die ("Could not open +the file in read mode"); my @sbsb_upd_471 = <SBSBUPDFILE>; close(SBSBUPDFILE); open(SBSBUPDFILE, "<$file_471_final_out") || die ("Could not open +the file in read mode"); while (<SBSBUPDFILE>){ if ($_ =~ /(\@pSBSB_ID=")(\d{9})/){ $sbsbid = $2; last; } } close(SBSBUPDFILE); my $flag = 0; for ($i = 0;$i<= $#sbsb_upd_471; $i++){ if ($sbsb_upd_471[$i] =~ /(\@pSBSB_ID=")(\d{9})/){ $sbsb_upd_471[$i] =~ s/\d{9}/$sbsbid/; $sbsbid++; } } open(SBSBUPDFILE, "+>$file_471_final_out") || die ("Could not open + the file in read mode"); foreach (@sbsb_upd_471){ print SBSBUPDFILE $_; } ################################################################## +################# #Removing the "LEOF" segments between the loops retaining it at th +e end of the file ################################################################## +################# open (SBSBUPDFILE, "<$file_471_final_out") || die ("Could not open + the file in read mode"); @eof_arr = <SBSBUPDFILE>; close (SBSBUPDFILE); for ($i = 0; $i <= $#eof_arr; $i++){ if ($eof_arr[$i] =~ /$eof/){ splice(@eof_arr,$i,1); } } push (@eof_arr,"$eof\n"); open (SBSBUPDFILE, ">$file_471_final_out") || die ("Could not open + the file in write mode"); foreach (@eof_arr){ print SBSBUPDFILE $_; } close (SBSBUPDFILE); unlink $file_471_out; print strftime ("%Y-%m-%d %H:%M:%S",localtime)." :: Generation of +unique SBSB IDs successful\n\n"; print strftime ("%Y-%m-%d %H:%M:%S",localtime)." :: Facets 4.71 MM +S KWD FILE - MMS_KWD_4.71_CONVERTED.txt with $sbsb_loop_cnt_471_act r +ecords created successfully\n"; close(SBSBUPDFILE); exit;
The errors that I find in the windows machine are mostly of this sort
I've got no idea as to what's to be done about this!!! Please help me out. Thanks in advance!!Use of uninititialized value in string ne at scriptname.pl line 118, < +UPDFILE> line 266 <#1>
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Code running perfectly fine in a Linux machine throwing errors whn run on windows
by Ratazong (Monsignor) on Jan 27, 2011 at 09:16 UTC | |
|
Re: Code running perfectly fine in a Linux machine throwing errors whn run on windows
by roboticus (Chancellor) on Jan 27, 2011 at 11:00 UTC | |
|
Re: Code running perfectly fine in a Linux machine throwing errors whn run on windows
by fisher (Priest) on Jan 27, 2011 at 09:54 UTC | |
by ajguitarmaniac (Sexton) on Jan 27, 2011 at 15:14 UTC |