It was Wednesday, December 01, 2004 when Gunnar Hjalmarsson took the soap box,
saying:
: Casey West wrote:
: >The original question was places squarely within reasonable query
: >boundaries.
:
: What do you refer to as "the original question"? To me it's this:
: http://www.mail-archive.com/beginners%40perl.org/msg64453.html
Yes. That's the question. An appropriate answer would look like the
following.
There are a few concepts you need to understand to solve this
problem. The first is opening and looping through files. Here's an
example of how to do that.
open FILE, "< file.txt" or die $!;
while ( <FILE> ) {
print $_; # prints one line at a time
}
close FILE;
In your problem you want to parse lines to look for external files
to loop through. In this case, the fourth element of
each line is the file name so using split() to break the line into a
list of parts is a good step. Here's what you do inside a while
loop.
my @line = split $_, /\s+/; # split on white space
my $filename = $line[3];
Next you wanted to open each file ($filename) and look through every
line for some string and replace it. I'll assume that you've
initialized these values as the variables $string and $replace.
Using the same technique for looping over the file, this is what
that might look like. Bear in mind that I'm going to open another
file for writing so for every line read we write that line to the
file. This can save memory.
open SRFILE, "< $filename" or die $!;
open OUTFILE, "> $filename.tmp" or die $!;
while ( <SRFILE> ) {
s/$search/$replace/g;
print OUTFILE $_;
}
close OUTFILE;
close SRFILE;
Your final step was to rename the temp file to the name of the
original file. Perl has a function for that too, rename().
rename "$filename.tmp", $filename;
There are the steps to solve your problem. It's a common problem and
I would suggest some reading material. First, I'd read through a
free online book called Beginning Perl. It's available in PDF form
here: http://learn.perl.org/library/beginning_perl/
There are sources in the Perl Documentation on your computer that
will help as well. Here are some commands that will give you access
to that documentation.
perldoc -f open
perldoc perlsyn
perldoc perlre
perldoc perl # for a table of contents
Enjoy!
Casey West
--
"A new swimming pool is rapidly taking shape since the contractors
have thrown in the bulk of their workers."
--In an East African newspaper
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>