I agree with what you have. Portability is the main reason I persuaded our team to use Perl instead of Unix shell and DOS batch jobs. Also, it makes it easier for new team members to learn how to script when they only have to learn Perl (as opposed to DOS batch and Unix KSH). The only KSH script that I have written for production type use is a very basic script and all the commands would be system calls anyway (could have been written in Perl but was just as easy to write in Korn). I have found that with Perl, it was easier to put in pretty solid error handling that is pretty reliable. Lastly, Modules make it easier to have repeatable routines that can be shared from one process to another.