Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: -pi -e argv repeater

by ikegami (Pope)
on Feb 02, 2007 at 15:45 UTC ( #597951=note: print w/ replies, xml ) Need Help??


in reply to -pi -e argv repeater

Perhaps you'd like

use constant PIE_NO_BACKUP => ''; sub pie(&$@) { ( my $code, # Code ref local $^I, # PIE_NO_BACKUP, '~', '.bak', etc local @ARGV, ) = @_; local *_; # Protect caller's $_. while (<>) { chomp; $code->(); print($_, "\n"); } } # perl -i -pe 's///' file1 file2 pie { s/// } PIE_NO_BACKUP, 'file1', 'file2'; # perl -i.bak -pe 's///' file? data*.txt pie { s/// } '.bak', map { bsd_glob($_) } 'file?', 'data*.txt';

Untested.

Update: Added missing "\n". Created constant for no backup. Added local *_;.


Comment on Re: -pi -e argv repeater
Select or Download Code
Replies are listed 'Best First'.
Re^2: -pi -e argv repeater
by jettero (Monsignor) on Feb 02, 2007 at 15:57 UTC

    $^I is apparently all I needed. I had no idea it would be so simple, thanks. I obviously should have just asked on the chatterbox... how embarassing.

    -Paul

Re^2: -pi -e argv repeater
by OfficeLinebacker (Chaplain) on Feb 03, 2007 at 19:08 UTC
    May I ask what the (&$@) in the sub declaration is for?

    I like computer programming because it's like Legos for the mind.

      It's a prototype.

      Without the prototype, you'd have to do
      pie sub { CODE }, SCALAR, LIST
      or
      pie &func, SCALAR, LIST

      With the prototype, you can also do
      pie { CODE } SCALAR, LIST

        Ikegami,
        I see you disagree with Damian Conway (as expressed in Perl Best Practices--pp 194-196 for those of you following from home). I wish I understood better the exact thought processes behind each of your approaches.

        Either way, yes, $^I is the way to go (or, if you really want to be a Boy Scout about it, use English, only without the evil regexp vars, and use $INPLACE_EDIT in place of $^I).


        I like computer programming because it's like Legos for the mind.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (7)
As of 2015-07-29 19:36 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 (267 votes), past polls