in reply to Re: How to go about this?
in thread How to go about this?
#!perl #perl "copy of findandreplaceemail2.pl" -d . -i "Reporting Devices_01- +03-2009-09-00-00.csv" -s "Master Sched.csv" -o "Master Sched(new1).cs +v" use Getopt::Long; use Text::CSV; &GetOptions('d=s' => \$baseDir ,'i=s' => \$inFlNm ,'s=s' => \$subFlNm ,'o=s' => \$outFlNm ,'h' => \$hlp ,'hlp' => \$hlp ,'help' => \$hlp); $emailList = "test.csv"; $csv = Text::CSV->new(); # Save substitution data in memory indexed by manager email address open IN1, "<"."./$baseDir/$subFlNm" or die "Can't open input file >$su +bFlNm<\n"; open OUT, ">"."$baseDir/$outFlNm" or die "Can't open output file >$out +FlNm<\n"; while(<IN1>){ chomp; $_ =~ s/\,\,$//; $csv->parse($_); @subIn = $csv->fields(); $subRcd{$subIn[2]} = $_; #print "@subIn\n"; } close IN1; #There's got to be a way to take all of the Master file and use it in +the while loop open IN1, "<"."./$baseDir/$subFlNm" or die "Can't open input file >$su +bFlNm<\n"; while ($in1 = <IN1>){ chomp($in1); @mainFlds = split(/,/, $in1); $mainFlds[2] =~ s/^\s+//; $mainFlds[2] =~ s/\s+$//; if($in1 =~ /\d+\.\d+\.\d+\.\d+/){ open IN2, "<"."$baseDir/$inFlNm" or die "Can't open input file + >$inFlNm<\n"; while ($in2 = <IN2>){ chomp($in2); @subFlds = split(/,/, $in2); if($in2 =~ /\d+\.\d+\.\d+\.\d+/){ $subFlds[1] =~ s/^\s+//; $subFlds[1] =~ s/\s+$//; if("$mainFlds[2]" eq "$subFlds[1]" && "$mainFlds[1]" e +q "$subFlds[0]"){ if($in1 =~ /,,$/ || $mainFlds[7] ne '' || $mainFld +s[8] ne ''){ print OUT "$in1,$subFlds[5]\n"; } elsif ($mainFlds[6] ne ''){ print OUT "$in1,,$subFlds[5]\n"; } else { print OUT "$in1,,,$subFlds[5]\n"; } } } } close IN2; } elsif(($mainFlds[2] eq '' || $mainFlds[3] eq '') && $mainFlds[5] n +e '') { open IN2, "<"."$baseDir/$inFlNm" or die "Can't open input file + >$inFlNm<\n"; while ($in2 = <IN2>){ chomp($in2); @subFlds = split(/,/, $in2); if($subFlds[1] eq ''){ #print ">@subFlds\n"; $subFlds[1] =~ s/^\s+//; $subFlds[1] =~ s/\s+$//; if("$mainFlds[3]" eq "$subFlds[2]" && "$mainFlds[4]" e +q "$subFlds[3]" && "$subFlds[4]" ne ''){ if($in1 =~ /,,$/ || $mainFlds[7] ne '' || $mainFld +s[8] ne ''){ print OUT "$in1,$subFlds[5]\n"; } elsif ($mainFlds[6] ne ''){ print OUT "$in1,,$subFlds[5]\n"; } else { print OUT "$in1,,,$subFlds[5]\n"; } } } } close IN2; } else{ if($in1 =~ /Date/){ @date = split(/_/, $inFlNm); $date[1] =~ s/\-\d\d\-\d\d\-\d\d\.csv//; print OUT "$in1,$date[1]\n"; } else{ print OUT "$in1\n"; } } next; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: How to go about this?
by Plankton (Vicar) on Feb 12, 2009 at 22:48 UTC | |
|
Re^3: How to go about this?
by graff (Chancellor) on Feb 13, 2009 at 05:47 UTC |