Anthony Saffer wrote:
>
> Hello Everyone,
Hello,
> Here is the final code for my replacement script. I am about to test it
> out but I think it will work. Thanks to all who helped!!
>
> #!/usr/bin/perl -w
>
> use File::Find;
>
> my $FileCount = 0;
> my $LineCount = 0;
>
> sub process_files {
> my $FinalString = "";
> my $ConvertedText = "";
> my $TotalReplacements = 0;
>
> open MASTER_FILE, "/home/losttre/sorted.txt" or die ("Can't open file:
>sorted.txt! Aborting!\n");
> open TEMP_FILE, "> tempfile" or die("Can't open file: TEMPFILE! Aborting!\n");
> open THIS_FILE, "< $_" or die("Can't open target file: $_! Aborting!\n");
>
> @MATCH_KEYS = <MASTER_FILE>;
> @MATCH_TARGETS = <THIS_FILE>;
>
> foreach $matchkey (@MATCH_KEYS) {
> foreach $lineitem (@MATCH_TARGETS) {
> if($lineitem =~ m/$matchkey/i){
> $ConvertedText = lc($matchkey);
> $FinalString = s/$matchkey/$ConvertedText/;
> print TEMP_FILE "$FinalString\n";
> $LineCount++;
> $TotalReplacements++
> }
> else{
> print TEMP_FILE "$lineitem\n";
> $LineCount++;
> }
> }
> close(TEMP_FILE);
> close(THIS_FILE);
> # unlink(THIS_FILE)
> #rename(TEMP_FILE, THIS_FILE);
> $FileCount++;
> }
> }
>
> print "Process starting...\n";
> print "Cycling through files. This might take some time.\n";
> find(\&process_files, @ARGV);
> print "DONE!\n";
> print "FILES PROCESSED: $FileCount\n";
> print "LINES PROCESSED: $LineCount\n";
> print "REPLACEMENTS: $TotalReplacements\n";
> print "Exiting...";
This may work better (or at least be faster):
#!/usr/bin/perl -w
use strict;
use File::Find;
my $FileCount = 0;
my $LineCount = 0;
my $TotalReplacements = 0;
open MASTER_FILE, '/home/losttre/sorted.txt' or die "Can't open file: sorted.txt: $!";
my @match_keys = map { chomp; [ qr/$_/i, lc ] } <MASTER_FILE>;
close MASTER_FILE;
sub process_files {
return unless -f; # process files only
rename $_, 'tempfile' or die "Can't rename $_: $!";
open THIS_FILE, "> $_" or die "Can't open file: $_: $!";
open TEMP_FILE, 'tempfile' or die "Can't open file: tempfile: $!";
while ( my $lineitem = <TEMP_FILE> ) {
chomp $lineitem;
for my $matchkey ( @match_keys ) {
$TotalReplacements++ if $lineitem =~ s/$matchkey->[0]/$matchkey->[1]/;
}
print THIS_FILE "$lineitem\n";
$LineCount++;
}
close TEMP_FILE;
close THIS_FILE;
unlink 'tempfile';
$FileCount++;
}
print "Process starting...\n";
print "Cycling through files. This might take some time.\n";
find( \&process_files, @ARGV );
print "DONE!\n";
print "FILES PROCESSED: $FileCount\n";
print "LINES PROCESSED: $LineCount\n";
print "REPLACEMENTS: $TotalReplacements\n";
print "Exiting...";
__END__
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]