RE: open > file && s/ / /;
- From: BVolk@xxxxxxxxxxxxxx (Brian Volk)
- Date: Thu, 28 Jul 2005 12:59:54 -0500
> -----Original Message-----
> From: John W. Krahn [mailto:krahnj@xxxxxxxxx]
> Sent: Wednesday, July 27, 2005 3:47 PM
> To: Perl Beginners
> Subject: Re: open > file && s/ / /;
>
>
> 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
>
John.. Thank you for the reply! Just a couple of things I don't
understand...
1.) > # set the in-place edit variable
> # cannot be '' on Windows
> $^I = '.bak';
This worked great on WinXP but when I went home and tried it on Linux it did
not work. Which is what, I'm sure your comments ment.. :~) How would I
write $^I = '.bak'; on Linux?
2.) The subsitution didn't work on some of the files... could this have to
do w/ CR or LF? Here is an example:
----- text file revised ----
NAD-75 - Non-ammoniated formula for removal of water-based waxes and polymer
floor finishes. ~
http://www.spartanchemical.com/sfa/MSDSRep.nsf/18ce12380374a5da8525665f00619
f51/03578511e75fcee485256fb1005c3e3f!OpenDocument
----- text file .bak ----
NAD-75 - Non-ammoniated formula for removal of water-based waxes and polymer
floor finishes. ~
http://www.spartanchemical.com/sfa/MSDSRep.nsf/18ce12380374a5da8525665f00619
f51/03578511e75fcee485256fb1005c3e3f!OpenDocument
In this file you can see that it worked great...
---- text file revised ----
No-rinse disinfectant detergent.Use only with Lean Clean On The Go
Dispenser. EPA Reg. No. 1839-167-5741. ~
descriptions/product/MSDS/
----- text file .bak
No-rinse disinfectant detergent.Use only with Lean Clean On The Go
Dispenser. EPA Reg. No. 1839-167-5741. ~
http://www.spartanchemical.com/sfa/MSDSRep.nsf/18ce12380374a5da8525665f00619
f51/02d57310a7f9d2c185256def006df04d!OpenDocument
Any ideas pls let me know.... Thanks again for your help!
Brian Volk
.
- Follow-Ups:
- Re: open > file && s/ / /;
- From: John W. Krahn
- Re: open > file && s/ / /;
- Prev by Date: Re: login shell?
- Next by Date: Re: Getting Date Stamp of a file on a Win32 System
- Previous by thread: Re: open > file && s/ / /;
- Next by thread: Re: open > file && s/ / /;
- Index(es):