While there are some occasions that using shell commands from Perl are justified, there are many more when they are not. Decide: use the shell OR use Perl. Mixing them is to encourage inefficiency.
This is a rough conversion table from UNIX commands to Perl.
Please note that there are not always direct single equivalents, and that there are certainly many more that I can't think of (but many others will).
UNIX | Perl | Origin |
. | do | built-in |
awk | perl ;-) (often 'split') | built-in |
basename | File::Basename::basename | Base module |
cat | while(<>){print} | built-in |
| ExtUtils::Command::cat | Base module |
cd | chdir | built-in |
chmod | chmod | built-in |
chown | chown | built-in |
cp | File::Copy | Base module |
| ExtUtils::Command::cp | Base module |
date | localtime | built-in |
| POSIX::strftime | Base module |
declare | see typedef |
df | Filesys::Df | CPAN |
diff | File::Compare | Base module |
dirname | File::Basename::dirname | Base modules |
echo | print | built-in |
egrep | while(<>){print if /re/} | built-in |
eval | eval | built-in |
exec | exec | built-in |
| pipe (co-processes) | built-in |
| open (file descriptors) | built-in |
export | Assign to %ENV | Hash variable |
| Env::C | CPAN |
find | File::Find | Base module |
ftp | Net::Ftp | Base module |
function | sub | built-in |
grep | see egrep |
integer | int | built-in |
kill | kill | built-in |
ln -s | link | built-in |
ls | glob | built-in |
| opendir/readdir/closedir | built-in |
| stat/lstat | built-in |
mkdir | mkdir | built-in |
mkpath | ExtUtils::Command::mkpath | Base module |
mv | rename | built-in |
| ExtUtils::Command::mv | Base module |
od | ord | built-in |
| printf | built-in |
print | print | built-in |
printf | printf | built-in |
rand | rand | built-in |
rm | unlink | built-in |
| ExtUtils::Command::rm | Base module |
rm –f | ExtUtils::Command::rm_rf | Base module |
sed | s/// (usually) | built-in |
select | Shell::POSIX::select | CPAN |
sleep | sleep | built-in |
| alarm | built-in |
sort | sort | built-in |
source | do | built-in |
tail | File::Tail | CPAN |
times | times | built-in |
touch | open()/close() | built-in |
| ExtUtils::Command::touch | Base module |
trap | %SIG | Hash |
| sigtrap | pragma |
typeset | my | built-in |
typeset –i | int | built-in |
typeset –l | lc | built-in |
typeset –u | uc | built-in |
typeset -Z | sprintf | built-in |