> On Jan 28, 2016, at 1:37 AM, Frank Larry <frankylarry2...@gmail.com> wrote:
> 
> Hi Team,
> 
>  could you please let me? i have a file which contains "Debug", i would like 
> to replace debug to "Error", when i ran the below program the out showing 
> Error message but how to save the output with new changes. Could you please 
> tell me how to fix it?

The way to do this within a larger Perl program is to open a new output file, 
copy all of the possibly-modified lines to this file. Then you can rename the 
new file to the same name as the old file, and perhaps rename the old file as 
well and keep it around as a backup.

> 
> open(FILE, "<filter.txt") or die "Can’t open $!\n”; 

The three-argument version of open is preferred here, and let’s put the file 
name in a variable and use a lexical variable for the file handle (untested):

my $filename = ‘filter.txt’;
open( my $in, ‘<‘, $filename ) or die(“Can’t open $filename for reading: $!”);

# create a new file
my $newfile = $filename . ‘.new’;
open( my $out, ‘>’, $newfile ) or die(“Can’t create $newfile: $!”);

> 
> while($line = <FILE>){

while( $line = <$in> ) {
 
> 
>    print "Before substituting: ", $line ,"\n"; 
>     $line =~ s/Debug/Error/g;     
>     print "After substituting : ", $line , "\n”; 

        print $out $line;
>       
> }  
> 
> close(FILE);

close($in);
close($out) or die(“Error writing to output file $newfile: $!”);

# rename the old file
my $savefile = $filename . ‘.sav’;
rename $filename, $savefile;

# rename the new file
rename $newfile, $filename;

Jim Gibson
j...@gibson.org




--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to