Shell Commands vs. Perl Clause
- 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