Perl调用外部命令细节注意



打算用Perl写脚本调用外部命令的时候发现source一直都是找不到文件, 就很奇怪啊;

找了好久, 找到下面的资料 //用的人少了, 不好找

在Perl开发中,通常可以用system函数或 ``操作符来执行系统命令,但注意对 以下 alias, bg, bind, break, builtin, cd, command, compgen, complete, continue, declare, dirs, disown, echo, enable, eval, exec, exit, export, fc, fg, getopts, hash, help, history, jobs, kill, let, local, logout, popd, printf, pushd, pwd, read, readonly, return, set, shift, shopt, source, suspend, test, times, trap, type, typeset, ulimit, umask, unalias, unset, waitshell内部命令(即在文件系统中无执行文件的命令)这样直接执行会出错,错误是无法找到该文件或目录。可以在命令前加sh –c来实现。而对cdumaskSESSION型命令,应该用Perl的内部函数chdirumask等来实现功能更可靠。