How much bash to learn compared with Perl?

Hello Everyone! I am somewhat new to Unix command line and don't have much experience to input on the matter so I wanted to gather some opinion's from people who have been down the road already.

Currently, I am going through a book by John Muster called "Unix Made Easy". I have gone through more than half the book and am very familiar with all basic commands, VI, various Shell syntax, variables, etc.

I am in the later part of the book where it starts getting into Expressions and Shell Scripting with AWK and SED. The book will cover these areas in a general skill set etc.

I have an interest in learning Perl scripting to gain more flexibility and use the power it has where basic shell scripting will fall short.

So with that said from a beginners point of view, how much time should I spend on Bash scripting versus just diving right into Perl Scripting etc? I would imagine with Perl you could program the same scripts as you can with Bash?

BTW.. I am specifying Bash shell because I am currently learning on Ubuntu Version 11.04. Thanks in advance for any input!!

If you want to learn Perl, then go straight to Perl. It is quite big area to comprehend, so the sooner you start the better :). Basic shell knowledge is useful, but not required to master Perl. Also learning too many things in a one shot might not be so good, as you might forget half of the things, and confuse the other half you didn't forget. I would focus on Perl if it is really what you want to script with :).

Perl is very powerful because of its regular expressions, and because it has so many add-on modules available.

But Bourne shells can do things simply which Perl would make quite complex, especially when you're using external programs. I've seen many perl scripts which were just line after line after line of system() and backticks, hardly perl scripts at all -- a barely-there crust of perl holding together pure shell code. Instead of using one shell, they use dozens of shells. If you learn to program in shell, you'll at least understand why this is a bad idea.

More to the point, perl isn't a shell. You can't login to perl. If you want to administer UNIX, you have to learn how to use a shell, and it might as well be some variety of bourne; too many things use it to avoid it, like cron, at, many system init and system configuration scripts, and your own logins.