develooper Front page | perl.beginners | Postings from May 2011

Re: edit_file and edit_file_lines

Thread Previous | Thread Next
From:
Jim Green
Date:
May 15, 2011 10:31
Subject:
Re: edit_file and edit_file_lines
Message ID:
BANLkTikVGjrZprEEAxBXqJ1q0L7739SR8Q@mail.gmail.com
On 15 May 2011 01:28, Uri Guttman <uri@stemsystems.com> wrote:
>
> hi all,
>
> As with other releases of File::Slurp I think this list should be told
> about it since this module is so easy to use and makes your Perl much
> simpler and also faster.
>
> uri
>
> 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.

this is very nice, don't need to call perl in perl anymore..

 perl -pi -e '$_ = "" if /foo/' filename

but what if the file is very large? slurping the file in to memory will
be ok?

or is there any other alternatives you are aware of? or you can dismiss?

Thanks!

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About