A shell has two main features: it can be used interactively and it can be used as a programming language. It is called a shell because its purpose was originally just to run external programs - nothing else. Any product that tries to perform two functions has to make compromises, so generally a shell will not compare well against a product which only does one of those tasks - like Perl.
If you need that duality of interaction and programming in the same language then use a shell, otherwise use the language you are most comfortable with.