Perl中的system()函数

您可以使用 system() Perl函数来执行任何Unix命令,该命令的输出将进入perl脚本的输出。默认情况下,它是屏幕,即STDOUT,但是您可以使用重定向操作符将其重定向到任何文件>-

#!/usr/bin/perl
system( "ls -l")
1;

当执行上述代码时,它列出了当前目录中所有可用的文件和目录-

drwxr-xr-x 3 root root 4096 Sep 14 06:46 9-14
drwxr-xr-x 4 root root 4096 Sep 13 07:54 android
-rw-r--r-- 1 root root 574 Sep 17 15:16 index.htm
drwxr-xr-x 3 544 401 4096 Jul 6 16:49 MIME-Lite-3.01
-rw-r--r-- 1 root root 71 Sep 17 15:16 test.pl
drwx------ 2 root root 4096 Sep 17 15:11 vAtrJdy

当命令包含诸如$PATH或$HOME之类的外壳环境变量时,请当心。尝试以下三种情况-

#!/usr/bin/perl
$PATH = "I am Perl Variable";
system('echo $PATH'); # Treats $PATH as shell variable
system("echo $PATH"); # Treats $PATH as Perl variable
system("echo \$PATH"); # Escaping $ works.
1;

当执行上述代码时,根据外壳变量$PATH中的设置,它将产生以下结果。

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
I am Perl Variable
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin