On 15 May 2011 01:28, Uri Guttman <u...@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!

--
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