edit_file, edit_file_lines
Ben Tisdall
ben.tisdall at photobox.com
Sun May 15 12:57:02 BST 2011
Ooh that's useful, thanks!
On Sun, May 15, 2011 at 6:31 AM, Uri Guttman <uri at stemsystems.com> wrote:
>
> Hi all,
>
> Have you ever wanted to use perl -pi inside perl? Did you have the guts
> to localize $^I and @ARGV to do that? Now you can do that with a simple
> call to edit_file or edit_file_lines in the new .018 release of
> File::Slurp. Now you can modify a file in place with a simple call.
>
> edit_file reads a whole file into $_, calls its code block argument and
> writes $_ back out the file. These groups are equivalent operations:
>
> perl -0777 -pi -e 's/foo/bar/g' filename
>
> use File::Slurp qw( edit_file ) ;
>
> edit_file { s/foo/bar/g } 'filename' ;
>
> edit_file sub { s/foo/bar/g }, 'filename' ;
>
> edit_file \&replace_foo, 'filename' ;
> sub replace_foo { s/foo/bar/g }
>
> edit_file_lines reads a whole file and puts each line into $_, calls its
> code block argument and writes each $_ back out the file. These groups are
> equivalent operations:
>
> perl -pi -e '$_ = "" if /foo/' filename
>
> use File::Slurp qw( edit_file_lines ) ;
>
> edit_file_lines { $_ = '' if /foo/ } 'filename' ;
>
> edit_file_lines sub { $_ = '' if /foo/ }, 'filename' ;
>
> edit_file \&delete_foo, 'filename' ;
> sub delete_foo { $_ = '' if /foo/ }
>
> So now when someone asks for a simple way to modify a file from inside
> Perl, you have an easy answer to give them.
>
> --
> Uri Guttman ------ uri at stemsystems.com -------- http://www.sysarch.com --
> ----- Perl Code Review , Architecture, Development, Training, Support ------
> --------- Gourmet Hot Cocoa Mix ---- http://bestfriendscocoa.com ---------
>
More information about the london.pm
mailing list