1,system函数
要启动子进程,perl最简单的方法就是利用system函数,例如,在perl里执行unix的date命令:
system "date";
system 'for i in *;do echo == $i ==; cat $i;done';
此处使用单引号,因为里面的$符号是供shell使用的,而不是给perl看的。双引号会让perl将$i替换成它在perl的值,而不是让shll处理。
2,避免使用shell
my $tarfile = "something*wicked.tar";
my @dirs = qw (fred | flintstone betty);
system "tar", "cvf", $tarfile, @dirs;
3, exec函数
4,环境变量
5,用反引号获得输出结果
my $now = `date`; #获取date的输出结果
print "The time is now $now"; #已包含换行符
如果想用标准输出来获得标准错误输出,可以使用shell的“将标准错误输出合并至当前标准输出”功能,此功能一般在unix shell中通常写成2>&1, 如下所示:
my $output_with_errors = `frobnitz -enable 2>&1`;
6,在列表上下文中使用反引号
如果某个命令输出结果有许多行,那么在标量上下文中使用反引号是,它会被当成一个很长的字符串返回,其中包含换行符。但是如果是在列表上下文中使用相同的反引号,则会返回由各行输出所组成的列表。
在标量上下文中,我们会立即得到所有输出,必须自行拆开。
my $who_text = `who`;
但是在列表上下文中,则会自动取得拆成一行行的数据;
my @who_lines = `who`;
7,将进程视为文件句柄(下面的暂时还不熟练)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/312079/viewspace-245699/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/312079/viewspace-245699/