[转]perl里使用外部命令
发布时间:2020-12-16 00:22:26 所属栏目:大数据 来源:网络整理
导读:Perl调用 外部 命令 的方式和区别 转自: http://hi.baidu.com/develop_skill/blog/item/d69bc0cbf010da4ff31fe72b.html 主要的方式简述如下: 1. system("command"); 使用该 命令 将开启一个子进程执行引号中的 命令 ,父进程将等待子进程结束并继续执行下
Perl调用外部命令的方式和区别
转自:
http://hi.baidu.com/develop_skill/blog/item/d69bc0cbf010da4ff31fe72b.html
主要的方式简述如下:
1. system("command"); 使用该 命令将开启一个子进程执行引号中的 命令,父进程将等待子进程结束并继续执行下面的代码。 2. exec("command"); 效果同system 命令类似,区别是不会开启子进程,而是取代父进程,因此执行完引号中的 命令后进程即结束。一般和fork配合使用。 3. `command`; 使用反引号调用外部 命令能够捕获其标准输出,并按行返回且每行结束处附带一个回车。反引号中的变量在编译时会被内插为其值。 4. open LIST "ls -l|"; ? ? open MORE "|more"; ? ? @list=<LIST>; ? ? print MORE @list; ? ? close(LIST); ? ? close(MORE); 使用带管道的文件句柄来执行外部 命令,使用方式与读写文件类似。可以从外部 命令的输出读取数据,也可以将数据输出到外部 命令作为输入。 5. defined(my $pid=fork) or die "Can not fork: $!n"; ? ? unless ($pid) { ? ?? ???exec ("date"); ? ? } waitpid ($pid,0); 使用fork将会开启子进程与父进程同时执行之后的代码,其中父进程中fork会返回一个非零的数,而子进程中将返回零。上面的代码完成和system("date")相同的功能。比起system单纯地调用外部 命令,fork可以完成更加复杂的进程操作。 ?
在Perl中用system、exec、readpipe函数来执行系统命令
转自:
http://cn.waterlin.org/
在Perl中,可以用
system、
exec、
readpipe这三个
命令来调用其他脚本、系统
命令等。这三个
命令的主要区别就是返回值。
1) 对于
system这个函数来说,它会返回执行后的状态,比如说
当然,你也可以用类似于下面的语句来检查出错的原因:
2) 而对于
exec这个函数来说,仅仅是执行一个系统的
命令,一般情况下并没有返回值。
exec只有在系统没有你要执行的
命令的情况下,才会返回false值。
3) 当我们需要保存系统
命令运行的结果,以便分析并作进一步的处理时,就要用到
readpipe这个函数了。例如:
会产生如下的结果:
当然,你也可以把生成的结果放到一个文件里,以便写工作日志呀、发布报告呀。
这样,你就把系统运行的结果扔到了系统
命令所在目录下的result.txt文件里了。
?
完!
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- grails – 有没有更好的方式来写这个空检查和非空检查,在gr
- delphi-icv 邮件发送 -所用控件(HtmlSmtpCli)
- delphi – TDataModule后代’创建’没有.Create但没有问题?
- go/golang main() init()方法的调用
- .net Reflector 比较有用的东东。
- 使用Delphi 6处理Unicode字符
- php – 使用Artisan进行迁移的Laravel设置是失败的
- Golang/Go语言/Go IDE/Go windows环境搭建/Go自动提示编译器
- [VB.NET]用SQL查询得到(按编号分组的日期最大的记录)
- lua-binding配置安卓。