In general, what you want to do is this;
1. open the file for reading
2. open a second file for writing
3. read in each line, doing the substitution
(although technically using the tr/// operator might be quicker)
4. after each substitution, print the result to the second file
5. once all lines are done, overwrite your original file with the temp
file.
>From the code you've shown I'm confident that you can figure out how to do
this on your own.
This might seem like a lot of work, but in reality it takes very little time
and is the way probably 99% of the programs out there do this kind of
operation. There is possibly a way to use sysread, seek, etc. to try to
manipulate the file in place, but it doesn't work in all situations, and I
wouldn't start into that until you're much more comfortable with Perl.
-----Original Message-----
From: Mike Flannigan
To: [EMAIL PROTECTED]
Cc: Mike Flannigan at home
Sent: 7/12/03 12:43 PM
Subject: Search and Replace
OK, I'm a real newbie, but even I am ashamed to be asking this.
I want to search for a vertical mark ( | ) and replace it with
something else (h). That's all - nothing fancy. What am I doing
wrong here:
use strict;
use warnings;
my $listelem = "52101.txt";
#Open file in listelem if it exists
if (-e $listelem) {
open (HANDLE, $listelem);
}
else {
print "$listelem does not exist.\n";
system('pause');
}
#Grab main file contents
chomp (my @filecontents = <HANDLE>);
while (<HANDLE>) {
my $filecontents =~ s/\|/h/;
}
__END__
It's probably in the my $filecontents =~ s/\|/h/;
statement. I'm guessing the $filecontents is not the
correct thing to use. Or maybe I have to open the
file with append (>>). I assume I have to
escape the "|" in the search expression above.
I've tried various combinations of the g m and s
modifiers for the search, but none work.
I know I don't have to suck the entire file contents
into @filecontents, but I do want to do that for other
reasons.
The file.txt file contains:
1.13589
30
0.0
40
0.065
1
FSC|M NO.
100
AcDthYext
0
TET
5
DPUYC5D
330
DDYED26
100
I get the digest version of this list, so if you need immediate
response, you might want to cc me directly
mailto:[EMAIL PROTECTED]
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]