The differences between these various elements are detailed in
exec,
system,
fork,
pipe,
syscall and
eval. You've also forgotten
backticks, which is the method I need most often. Please note that
eval does not invoke the operating system at all, rather invokes the Perl interpreter on the string you pass it. What are you trying to do?