首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Perl中获得外部命令的输出?

如何在Perl中获得外部命令的输出?
EN

Stack Overflow用户
提问于 2009-09-25 14:09:22
回答 6查看 77.1K关注 0票数 21

我希望将Windows命令行程序(比如powercfg -l)的输出写入一个使用Perl创建的文件中,然后在for循环中逐行读取该文件,并将其分配给一个字符串。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-09-25 14:28:26

代码语言:javascript
复制
my $output = qx(powercfg -l);

## You've got your output loaded into the $output variable. 
## Still want to write it to a file?
open my $OUTPUT, '>', 'output.txt' or die "Couldn't open output.txt: $!\n";
print $OUTPUT $output;
close $OUTPUT

## Now you can loop through each line and
##   parse the $line variable to extract the info you are looking for.
foreach my $line (split /[\r\n]+/, $output) {
  ## Regular expression magic to grab what you want
}
票数 22
EN

Stack Overflow用户

发布于 2009-09-25 15:14:13

你已经有了一些很好的答案。此外,如果只想处理命令的输出,而不需要将输出直接发送到文件,则可以在命令和Perl脚本之间建立管道。

代码语言:javascript
复制
use strict;
use warnings;

open(my $fh, '-|', 'powercfg -l') or die $!;
while (my $line = <$fh>) {
    # Do stuff with each $line.
}
票数 26
EN

Stack Overflow用户

发布于 2009-09-16 14:33:58

代码语言:javascript
复制
system 'powercfg', '-l';

是推荐的方式。如果你不介意产生一个子壳,

代码语言:javascript
复制
system "powercfg -l";

也行得通。如果您想要字符串形式的结果:

代码语言:javascript
复制
my $str = `powercfg -l`;
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1477500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档