Brian Volk wrote:
> Hi all, 

Hello,

> Can someone pls take a look at the script below and explain what I'm doing
> wrong..  The script runs w/out errors but the substitution is not working..
> Hopefully the note below will be enough info..  
>  
> I was able to print the file names that I wanted but once I tried to open
> the file and s / / /;  the wheels fell off.. :~)  
>  
> I think I can open a file this way....?  Pls explain what I am doing
> wrong....  
> Thank you! 
> ---------------------------------
> #!/usr/local/bin/perl
>  
> use strict;
> use warnings;
>  
> # dir w/ text files containing text and links
> my $dir = "J:/flash_host/ecomm/descriptions/product/small"; 
>  
> # a text file that has the file names which contain broken links  
> my $bad_file = "c:/brian/spartan/bad_links.txt";
>  
> open BAD, "< $bad_file" or die "Can't read $bad_file: $!\n";
>  
> # name each record in $bad_file => $file 
> while (my $file = <BAD>) {
>       chomp $file;
>       
>       if (-e "$dir/$file") {
>  
>       # open the text file w/ a bad link and sub "http://..."; w/ a local
> file  
>       open BADFILE, "> $dir/file" or die "Can't open $dir/$file for replace:
> $!\n" &&
>       s & http://.* & descriptions/product/MSDS/$file &;
>       close BF
>        }  
>  
>     } 
> -----------------------------------

Perl provides some shortcuts to allow you to do what you want:

#!/usr/local/bin/perl

use strict;
use warnings;

# dir w/ text files containing text and links
my $dir = 'J:/flash_host/ecomm/descriptions/product/small';

# a text file that has the file names which contain broken links
my $bad_file = 'c:/brian/spartan/bad_links.txt';

open BAD, '<', $bad_file or die "Can't read $bad_file: $!\n";

# store the files to "edit" in @ARGV
@ARGV = map { chomp; "$dir/$_" } <BAD>;

# set the in-place edit variable
# cannot be '' on Windows
$^I = '.bak';

# modify the files and save the originals with .bak extention
while ( <> ) {
    s & http://.* & descriptions/product/MSDS/$file &;
    print;
    }

__END__



John
-- 
use Perl;
program
fulfillment

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