Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re^2: in place editing a list of files

by rjsaulakh (Beadle)
on Jan 08, 2007 at 18:09 UTC ( #593585=note: print w/ replies, xml ) Need Help??


in reply to Re: in place editing a list of files
in thread in place editing a list of files

liverpool thx a lot for ur piece of code but unfortunately the problem remains the same my files are not edited and they remain the same even after i run the script as modified by you . request you if u can guide me more on this i dont know where am i making the mistake


Comment on Re^2: in place editing a list of files
Re^3: in place editing a list of files
by liverpole (Monsignor) on Jan 08, 2007 at 18:45 UTC
    Hi rjsaulakh,

    As ysth pointed out, my code was not doing the in-place editing part, nor the multi-line edit.  But those are quite easy to do.

    Here's a modified example that should work for you.

    Notice that the datafile can contain blank lines or commented-out lines, which are skipped (eg. # testfile).

    Notice, too, that the input file, once it's read and processed, is being written to, so it's REALLY an in-place edit.

    Warning:  Since it's doing in-place edits, be careful to have a backup copy of any files that you need to keep the original of!

    Here's the code:

    #!/usr/bin/perl + # Always use these use strict; use warnings; + # Edit contains the complete path of the files to be edited my $path = "/home/rjs/heena/edit" ; + # Getting a file handler (and test for success/failure!) open(FL, "<", $path) or die "unable to open data file '$path' ($!)\n"; + # Getting all the file names in the @array so that i can process the # file one by one chomp(my @array = <FL>); + # Close the data file close(FL); + # Process each file + foreach my $file (@array) { next if ($file =~ /^\s*(#|$)/); # Skip blank/commented lines process_file($file); # Process file } + + # Subroutines sub process_file { my ($file) = @_; + $/ = ""; # Read entire file as a single line my $fh; # Declare file handle (better than using globals) + # Read the file open($fh, "<", $file) or die "unable to read file '$file' ($!)\n"; $_ = <$fh>; close($fh); + # Apply the change s/CONFIDENTIAL(.*?)own\s+risk/ /sm; + # Write the file back TO THE SAME FILENAME open($fh, ">", $file) or die "unable to write file '$file' ($!)\n" +; print $fh $_; close $fh; }

    I made the file-processing into a subroutine for clarity, but you could do it within the loop if you wanted to, naturally.


    s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://593585]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (4)
As of 2015-07-04 07:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (58 votes), past polls