There is no single yes or no answer to the above question. While you can
probably replicate a sheel script in Perl, that is not always the best
idea. Shells are generally good at calling loads of external programs,
and stringing them together in some coherent whole. As programming
languages, most shells are generally not that great. Shells also often
lack builtin functionality that you tend to find in perl, and people use
tools like awk, sed, grep, etc for that instead.
While Perl can be used to 'replace' shell scripts, I very often prefer
shell scripts, simply because the problem at hand is more easily solved
with a shell than with Perl.
That is a gross overgeneralisation. If the majority of tasks consists of
calling external programs, then portability has nothing to do with it.
I can run my shell scripts on the three Unix and unix-like OSes that I
work on, as well as on Windows and MacOS. All the 'standard' tools (or
close relatives of them) are available on all those platforms if you
want.
To the OP: use what is best for the task at hand. If almost all you have
to do is execute SQL in your database servers and work with the result
sets, then using Perl with the DBI is probably a good choice. If,
however, you need to mainly execute tools that came with your software,
a shell may be better.
Don't be afraid to use both if you do both.
Martien