Calling Perl's in-built system() function is easy, determining if it was successful is hard. Let's face it, $? isn't the nicest variable in the world to play with, and even if you do check it, producing a well-formatted error string takes a lot of work. IPC::System::Simple takes the hard work out of calling external commands. In fact, if you want to be really lazy, you can just write: use IPC::System::Simple qw(system); and all of your system commands will either succeed (run to completion and return a zero exit value), or die with rich diagnostic messages.