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


in reply to Re^3: Modules which improve system() ?
in thread Modules which improve system() ?

For some functions, that seems reasonable, but the return value of external processes doesn't seem like something that can be decided without knowing what the program is and why you're calling it.

Absolutely correct! However, I think there are some cases we can consider as always being exceptional. Dumping core, being killed by a signal, or failing to execute at all are almost never part of "normal" operation. A program that considers those "normal" is in itself exceptional.

If system() were to take an additional array ref argument at the beginning, what should it mean?

You raise a good point here. I've got a strong motivation to have the easy action be the right action. Adding a set of return values at the start (especially after one has written the code) is easy, but as you've noted it's not particularly obvious. I'd like it to be easy and obvious, if I can. Feedback and thoughts on this in particular would certainly be appreciated.

Once again, if you're in the mindset of "a safe system() replacement that prevents common mistakes", then I think your API is exactly right.

That's very reassuring. Thank-you. ;)

So I guess you can either (1) convince me of the error of my ways; (2) come up with another function name that implies what it's doing better (eg safe_system, but preferably shorter!), in which case I'll happily add it to IPC::Run::Simple; or (3) release your own module with a different name.

We may actually be heading down route #3 here, simply because it gets closer to the "simple-as-can-be" goal for the end-user, and I'm very hesitant to make any "simple" module more complex than it needs to be.

Replies are listed 'Best First'.
Re^5: Modules which improve system() ?
by bart (Canon) on Jul 04, 2006 at 03:45 UTC
    Adding a set of return values at the start (especially after one has written the code) is easy, but as you've noted it's not particularly obvious.
    I'd like to point out that the built-in system does exhibit this kind of behaviour in interface towards an optional parameter on Windows and OS/2: you can insert an extra integer parameter in front of the normal command parameter(s). See OS2::Process.

    So, it's rarely done, but it is not unique.