Most of the standard low-level unix command-line utilities have equivalents in perl. Staples like chown, chmod, link, mkdir etc all have their perl counterparts. Using them rather than the unix equivalents saves one process per invocation (often two if the shell is invoked to parse the arguments) and can make your code easier to read, more stable and much safer (it's quite easy to trick the shell into doing evil things by injecting shell metacharacters in unexpected places. You can (and should) code defensively but it is a good move to completely remove the shell from the equation by using the perl primitives instead).
Having ranted all that, grep is deceptive as the perl grep is barely related to the unix grep. The functionality of grep is, however, so closely integrated into perl itself (via the =~ and <> operators) that this is never a problem after you've met it the first time.
Interestingly, grep reimplemented in perl often outperforms it's standard equivalent.
Another trip for first-timers is cd. You can use the external cd but it won't do what you want. You must use chdir() instead.
My advice would be to get your code working any way you can and then go through it again, replacing system invocations of unix binaries with perl equivalents one by one. You'll see your code getting cleaner as you go and, for non-trivial applications, will also notice improved performance.
TMTOWTDI means you don't have to have a "big bang" when moving from, say, bash scripting to perl. You can ease yourself in at a rate at which you feel comfortable.
Yours,
f
["]As soon as we started programming, we found to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs.["]
--Maur