Jeff 'japhy' Pinyan wrote:

> You can do this without opendir(), and without grep() or the for loop.
>
>   {
>     local $^I = ".bak";
>     local @ARGV = glob "$directory/*.txt";
>     while (<>) {
>       s/foo/bar/g;
>       print;
>     }
>   }
>
> Ta da!
>

Score one for Japhy!

This is the first time I have seen the diamond or in-place editing operator
used well.  Usually I blanch when I see them--the diamond conjures up the
image of some poor shmuck typing in lists of filenames at the command-line,
and the in-place suggests a delusory "economy" where there really is none in
the processing itself..  Here, with the encapsulation within a small block,
the immediacy of the assignment of @ARGV relative to its use in feeding the
diamond, and the overall brevity of the code, it makes good sense and makes
the process more clear by abstracting the [in this case] irrelevant details of
file access.

Thanks,

Joseph


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to