erikharrison is dead on. In order for your
existing program to work, you really have to open a temp
file, write to it, then clob the first file by moving the
temp file over the first file:
use strict;
use IO::File;
my $in = IO::File->new;
my $out = IO::File->new;
my $change_on = "FChangeBar Yes";
my $change_off = "FchangeBar No"; # hmmm, lower case c?
$in->open('test.mif') or die "can't read input";
$out->open('>tmp.mif') or die "can't write output";
while (<$in>) {
s/$change_on/$change_off/g;
print $out $_;
}
$in->close or die "can't close input";
$out->close or die "can't close output";
rename('tmp.mif','test.mif') or die "can't rename";
Here is a much cooler version that uses Tie::File:
use strict;
use Tie::File;
my @file;
tie @file, 'Tie::File', 'test.mif' or die "cannot tie file";
s/(FchangeBar )Yes/$1No/g for @file;
But, you might not be able to incorporate this into your
ending program. At any rate, you are welcome and good luck!
:)
jeffa
L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)
|