• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Perl调用外部命令(其他脚本、系统命令)的方法和区别

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1. `command`;

使用反引号调用外部命令能够捕获其标准输出,并按行返回且每行结束处附带一个回车。反引号中的变量在编译时会被内插为其值。
 
2. open LIST "ls -l|";
    open MORE "|more";
    @list=<LIST>;
    print MORE @list;
    close(LIST);
    close(MORE);
使用带管道的文件句柄来执行外部命令,使用方式与读写文件类似。可以从外部命令的输出读取数据,也可以将数据输出到外部命令作为输入。
 
3. system("command");
使用该命令将开启一个子进程执行引号中的命令,父进程将等待子进程结束并继续执行下面的代码。
  eg:system ("mkdir outdir ") unless (-d outdir);   #如果不存在outdir目录,就调用外部函数mkdir创建outdir目录
system会返回执行后的状态,即,如果正确执行完毕,返回0;没有执行返回非0
  eg: @args = (“mkdir″, “outdir″); system(@args) == 0  or die “system @args failed: $!”   <=>  system("mkdir outdir") == 0 or die "system @args failed: $!"

4. exec("command");
效果同system命令类似,区别是不会开启子进程,而是取代父进程,因此执行完引号中的命令后进程即结束。一般和fork配合使用。
而对于exec这个函数来说,如果执行了exec则结束后续所有进程,包括他自己的返回值<=>没有返回值;exec在系统没有你要执行的命令的情况下,不会返回false值,只是报错!!!和返回数值0 !!!

5. defined(my $pid=fork) or die "Can not fork: $!\n";
    unless ($pid) {
        exec ("date");
    }
waitpid ($pid,0);
使用fork将会开启子进程与父进程同时执行之后的代码,其中父进程中fork会返回一个非零的数,而子进程中将返回零。上面的代码完成和system("date")相同的功能。比起system单纯地调用外部命令,fork可以完成更加复杂的进程操作。

6.@result = readpipe( “ls -l /tmp” );
    print “@result”;
当我们需要保存系统命令运行的结果,以便分析并作进一步的处理时,就要用到readpipe这个函数了。
会产生如下的结果:

drwxr-xr-x  2 root   root    4096 Mar 19 11:55 testdir

当然,你也可以把生成的结果放到一个文件里,以便写工作日志呀、发布报告呀。

$inject_command = “./ConfigChecker.bat F:/nic/3502/ARRAY-4AD2E0573/etc “.$device_name;
chdir “F:/TestTools/bin/”;
@temp_result = readpipe($inject_command);
open(result_file,”>result.txt”);
print result_file @temp_result;
close(result_file);

这样,你就把系统运行的结果扔到了系统命令所在目录下的result.txt文件里了。

 
参考:
 【如有错误,望留言指正~】

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Perl语言的多线程(一)发布时间:2022-07-22
下一篇:
Intermediate perl-4.3&amp;4.4对数组取引用以及对数组引用解引用 ...发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap