Perl里调用进程的一些问题

边城狂人 2007-11-16 02:29:05
我现在需要用Perl调用一个控制台程序,需要获取该程序的返回值,并捕获标准输出和错误输出。
请问我应该怎么办?
...全文
122 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tongxiaoqiao 2007-11-19
  • 打赏
  • 举报
回复
上海电信┃服务器托管┃3600一年┃联系人:刘慧琳13918407268,QQ:89940022,MSN:89940022@qq.com

上海机房主机托管价格详细:(参考,可面议)
上海电信漕宝路机房 1U 360/月 1000/季 3600/年
上海移动怒江路机房 1U 400/月 1100/季 3600/年
上海联通江场路机房 1U 420/月 1200/季 4200/年
浙江电信游戏专区8G硬防 500/月 4200/年
更多大型机房请来电咨询13918407268刘慧琳

我们承诺:
上海骨干网络,国家一级机房,硬件一流,环境优良,可参观。
每台服务器一个免费固定IP地址
每台服务器保证10M以上带宽,一般情况下不限制速度。
7*24小时不间断服务,24小时电话,免费维护,重起,重装系统。
年付托管免费寄送!先托管,后付款,不满意随时快速退款。
参照网页http://ip345.com或者http://www.topcn.cn
边城狂人 2007-11-19
  • 打赏
  • 举报
回复
多谢大家,非常感谢。

补充一下 ($? >> 8) & 0xFF 才是真正的返回值
Aylazhang 2007-11-16
  • 打赏
  • 举报
回复
my $s = `dir`;
print $?; #返回值
print $s; #命令输出值
iambic 2007-11-16
  • 打赏
  • 举报
回复
把stderr重定向到stdout:
my $output = `cmd 2>&1`;

$output是stdout和stderr的输出总和。
$?是cmd的返回值。

如果要分开处理stdout和stderr,还是重定向到两个文件吧:
system("cmd 1>stdout.txt 2>stdout.txt");

边城狂人 2007-11-16
  • 打赏
  • 举报
回复
简单的说就是写一个Perl脚本
在这里脚本里干一个事情:调用一个程序或者命令,比如"dir",将其输出捕捉到变量$output中
同时将其返回值捕捉到变量$exitCode中

Aylazhang 2007-11-16
  • 打赏
  • 举报
回复
不太清楚你说的“脚本里写脚本”是什么意思。难道是要在脚本中fork一个新的进程?

对于返回值,标准输出这些可以使用重定向到文件来处理。
边城狂人 2007-11-16
  • 打赏
  • 举报
回复
那个是调试用的吧,我是要在脚本里写脚本来处理返回值和标准/错误输出
Aylazhang 2007-11-16
  • 打赏
  • 举报
回复
试试 perldebug

37,718

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧