http://www.perlmonks.org?node_id=949925


in reply to Re^2: capturing command output
in thread capturing command output

But besides handling stderr it gives you another layer of indirection.
So what? You have any idea how many layers of indirection there are on the open call? Or on the reading? Why is the number of layers of redirection an argument against backticks, but not about open, or the diamond operator?
Here it might actually be useful for logging the call (if it's generated) or storing the output for later inspection (it may not look as expected) or discard stderr or...
Sure, but he isn't doing any of that. One can critic any piece of code with "yeah, but if you want to do X in the future, it becomes harder". With arguments like that, you'd never write down a single line of code.

Replies are listed 'Best First'.
Re^4: capturing command output
by pklausner (Scribe) on Jan 26, 2012 at 15:01 UTC
    Why is the number of layers of redirection an argument against backticks

    Sorry, must be a misunderstanding. Of course backticks operator and open call are equivalent. I meant to say that the extra subroutine adds a layer. And unless the external command is trivial or absolutely, totally predictable, this comes in handy to instrument it. At least that is my experience. That's why I normally code a wrapper around system calls. More than one way etc...

      That's why I normally code a wrapper around system calls.
      Like this?
      sub backticks { `$_[0]`; }
        Almost. Although your backticks is a bit short on the logging and redirection part ;-)