从 perl 中的外部 *nix 命令获取 STDOUT、STDERR 和响应代码

2024-04-16

我想从 Perl 脚本中执行外部命令,将 stdout 和 stderr 的输出放入$variable我的选择,并将命令的退出代码放入$?多变的。

我经历过解决方案perlfaq8 http://perldoc.perl.org/perlfaq8.html#Why-can%27t-I-get-the-output-of-a-command-with-system%28%29?和他们的论坛,但他们不为我工作。奇怪的是我don't只要退出代码正确,在任何情况下都可以获得 sdterr 的输出。

我在 Red Hat Linux 5 上使用 Perl 版本 5.8.8。

这是我正在尝试的示例:

my $cmd="less";
my $out=`$cmd 2>&1`;

or

my $out=qx($cmd 2>&1);

or

open(PIPE, "$cmd 2>&1|");

当命令成功运行时,我可以捕获标准输出。

我不想使用额外的捕获模块。如何捕获外部命令的完整结果?


这正是大卫·戈尔登在写作时所面临的挑战Capture::Tiny https://metacpan.org/module/Capture::Tiny。我认为它将帮助您准确地完成您需要的事情。

基本示例:

#!/usr/bin/env perl

use strict;
use warnings;

use Capture::Tiny 'capture';

my ($stdout, $stderr, $return) = capture {
  system( 'echo Hello' );
};

print "STDOUT: $stdout\n";
print "STDERR: $stderr\n";
print "Return: $return\n";

重读后你可能真的想要capture_merged将 STDOUT 和 STDERR 连接到一个变量中,但我给出的示例很好且通用,所以我将保留它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 perl 中的外部 *nix 命令获取 STDOUT、STDERR 和响应代码 的相关文章

  • 如何提高非持久 CGI 进程中的 Moose 性能?

    Moose http search cpan org dist Moose 是一个很棒的对象框架 问题在于 连同它的依赖项一起 它是very大的 我们的分析表明 在我们的平台上 仅加载 Moose 就会在非持久性 CGI 应用程序脚本上产生
  • 首选的跨平台 IPC Perl 模块是什么?

    我想创建一个简单的 IO 对象 它代表一个向另一个程序打开的管道 我可以在应用程序运行时定期写入另一个程序的 STDIN 我希望它是防弹的 因为它可以捕获所有错误 并且是跨平台的 我能找到的最佳选择是 open sub io read lo
  • 如何使用 JSON 和 Perl (HTML::Mason) 通过 AJAX 创建动态网页?

    我对处理 Javascript JSON 和 Peel 的方式感到有些困惑 而且大多数示例都是 PHP 语言 这对我没有帮助 我有一个页面 称为 main html 其中包含来自 MySQL 的数据 并且可以选择按 id 删除行 然后我让
  • 使用 Perl 进行数据签名

    我参与了这个涉及发送签名数据的项目 我已经获得了一个 pem 文件和一个服务器证书 我应该将其导入到另一台服务器 我应该使用这些文件对数据进行签名 然后将签名的数据发送到另一台服务器进行验证和处理 我的问题是 如何将这两个文件导入到我的服务
  • 如何将一堆 perl 模块加载到 perl 脚本中

    这就是我想做的 在我制作 开发的每个脚本中 我总是调用 Perl 库和子例程 例如 directory bin perl system source directory cshrc use Net Domain qw hostname ho
  • 在 Perl 中验证电子邮件的正则表达式

    我是 Perl 新手 正在尝试掌握脚本语言 其中我遇到了正则表达式来验证电子邮件地址 我正在分享 perl 脚本 我不确定我在哪里犯了错误 部分始终被省略 随后正确的电子邮件 ID 也显示为无效 这是代码 usrs bin perl str
  • 当与不需要虚拟机的编译程序一起使用时,CGI 是否仍然很慢?

    当我学习 CGI 时 我了解到任何编程语言都可以用来将其输出挂钩到 http 响应消息 而它的输入是 http 请求消息 我读过的很多文章都在 Perl 的背景下讨论 CGI 这是因为 Perl 是与 CGI 结合使用的最常见的语言吗 我想
  • Perl 命令或模块,如 Linux“文件”命令

    我有一个下载文件的脚本 但这些文件在下载之前没有任何有关它们的信息 在为 Linux 编写代码时 我刚刚调用了qx file filename 查看它是否是 JPEG 图像 如果不是则将其删除 然而 我现在正尝试重写为独立于平台的纯 Per
  • python-daemon 不记录标准输出重定向

    我在代码中使用 python daemon 其中包含 print 语句 我想将它们发送到一个文件 所以我运行了以下命令 python server py gt gt log out 然而什么也进不去log out 谁能告诉我我需要做什么 T
  • 使用 XML::LibXML 删除 XML 命名空间

    我正在将 XML 文档转换为 HTML 需要做的事情之一是删除命名空间 命名空间不能在 HTML 中合法声明 除非它是根标记中的 XHTML 命名空间 我发现过 5 到 10 年前的帖子 介绍使用 XML LibXML 和 LibXML2
  • Perl 字符串替换:匹配但不替换正则表达式的一部分

    假设我在 Perl 中有一个字符串 我正在尝试匹配并替换为以下内容 string s a zA Z find a zA Z replace g 如图所示 我想替换两侧被非字母字符包围的所有内容 但是 当我替换字符串时 我不想也替换这些字符
  • 是否可以使用perl读取pdf文件中的文本?

    我想在 perl 中解析 pdf 文件中的文本 而不将 pdf 转换为任何其他格式 是否可以 是的你可以 看看CAM PDF http search cpan org dist CAM PDF 包裹 您可以使用此模块来提取文本 my pdf
  • Perl Mongo 查找对象 ID

    你会认为这是一件简单的事情 我有一个集合中的对象 ID 列表 我想根据对象 ID 获取单个记录 谷歌搜索过 但没有任何帮助 所以我有对象 ID 5106c7703abc120a04070b34 my client MongoDB Mongo
  • 编写脚本时,#!/usr/bin/perl 和 #!/usr/bin/env perl 有什么区别?

    显然 这同样适用于用 python bash sh 等替代 perl 昆汀下面的答案显然是正确的 所以我接受了它 但我想我实际上的意思是 两种使用 的方式的优点和缺点是什么 调用 perl python bash 作为脚本的解释器 有人提到
  • 将 stdout 作为命令行 util 的文件名传递?

    我正在使用一个命令行实用程序 该实用程序需要传递文件名以将输出写入 例如 foo o output txt 它唯一写入的东西stdout是一条消息 表明它运行成功 我希望能够通过管道传输写入的所有内容output txt到另一个命令行实用程
  • perl xs - 从 c 数组返回 perl 数组

    使用 XS 我尝试将值从 C 数组传递到可在脚本中使用的 Perl 数组 这是我的 xs 文件中的代码 AV DoubleArray getPerlArray CODE r newAV for size t i 0 i lt THIS gt
  • 使用 Perl 计算字符串中的连续字符数

    我有一个包含多个连续字符序列的字符串 例如 aaabbcccdddd 我想将其表示为 a3b2c3d4 到目前为止 我已经想出了这个 usr bin perl str aaabbcccdddd str s 1 1 g print str n
  • 使用 Perl 分割大文本文件

    我必须将一个 1 8Tb 的大文本文件分成两部分 我只需要文件的后半部分 该文件有 n作为记录分隔符 I tried perl ne print if gt line to start from test txt gt result txt
  • 从日志尾部提取匹配行后退出

    我使用范围运算符来提取日志文件的一部分 例如 tail F logfile perl ne print if b d 现在 一旦提取的部分匹配 我就尝试退出该过程 我尝试过 tail F logfile perl ne print if b
  • Perl 的 grep 函数如何与正则表达式一起使用?

    以下 grep 函数如何工作 什么作用 0o1Iil do chars grep 0o1Iil 0 9 A Z a z use Data Dumper print Dumper chars 在 chars中生成以下内容 VAR1 0 VAR

随机推荐

  • 动态更改 app.config 文件中的值

    我想修改 app config 中 appSetting 部分的值 所以我写道 Console WriteLine ConfigurationManager AppSettings name Console Read Configurati
  • 当 ng-model 为 null 时在 select 中设置默认值

    我是角度新手 我正在尝试设置默认状态以在我的 ng model 为空时进行选择 基本上 如果模型为空 我想将其设置为 无 我尝试了下面的代码 但它不起作用
  • Android:如何禁用 FEATURE_NO_TITLE

    我希望我的 Android 应用程序的行为如下 1 纵向模式 带标题栏 2 横向模式 无标题栏 因为高度限制 我知道我可以实现 1 使用 requestWindowFeature Window FEATURE NO TITLE 但是 当我旋
  • 正则表达式:如何排除多个字符组?

    我有一组网址 产品 类别 顾客 现在假设客户名为 john 我想帮助 john 使用较短的 url 访问他自己的帐户页面 before customers john after john 假设客户名称是唯一的 我正在尝试找出一个合适的正则表
  • DDD 领域模型复杂验证

    我正在努力使用域驱动设计原则重写我的 ASP NET MVC 应用程序 我正在尝试验证我的用户实体 到目前为止 我能够验证基本规则 例如用户名和密码是非空 空白字符串 然而规则之一是 我需要确保用户名是唯一的 但是 我需要访问数据库才能执行
  • 当 AVQueuePlayer 完成最后一个播放器项目时如何执行某些操作

    我有一个 AVQueuePlayer 它是由 4 个 AVPlayerItems 组成的数组创建的 并且一切都运行良好 当队列中的最后一项完成播放时 我想做点什么 我在这里查看了很多答案 这是看起来最有希望实现我想要的答案 声音播放完毕后执
  • Scala 泛型 - 为什么我无法在泛型类中创建参数化对象?

    我目前正在学习scala 为什么此代码不起作用 class GenClass T var d T var elems List T Nil def dosom x T var y new T y 我得到 错误 需要类类型 但找到了 T 代替
  • 如何使用 aws API Gateway 从另一个模型引用一个模型

    假设我有一个模型 Pet type object properties name type integer age type integer 还有另一个模型 Human type object properties name type in
  • 求数组中和的快速算法

    我正在寻找一种快速算法 我有一个大小为 n 的 int 数组 目标是找到数组中的所有模式x1 x2 x3 are different elements in the array such that x1 x2 x3 例如我知道有一个大小为
  • 在其事件处理程序中删除 FMX 对象

    我有以下组件 tncrdragdata tframedscrollbox tdragdata tgroupbox 主要思想是将它们组合起来并将它们用作列表框 我需要这样 该组框包含五个tedit 一个 tcombobox 和一个tbutto
  • 是否可以使用 Delphi 将 XML 发送和接收到 WSDL 函数?

    我们过去曾在 Delphi 中使用 Web 服务 这些服务很简单 参数很少 并向客户端返回单个值 我们工作的新服务应该能够输入 XML 并接收 XML 输出 有没有可以用于此目的的组件 当我尝试使用如下所示的方法时 出现错误 SearchA
  • 将对象传递给新表单

    我想做这样的事情 主要表格 Car car new Car create new object Form form2 new Form car Create new form and pass the car that I ve creat
  • 源地图请求导致 404 错误

    更新到 Chrome 29 后 我注意到浏览器尝试从应用程序根目录获取 jquery min map 但在从资产收到之前提出请求 小名声不允许我发布屏幕图像进行校对 当然 我可以在浏览器设置中关闭源映射 如下所示question https
  • LdapConnection SearchRequest 抛出对象不存在错误

    我正在尝试查询 LDAP 服务器以查找 LDAP 用户并将其导入到我的系统中 但是 当我尝试执行此操作时 请求会抛出DirectoryOperationException 说The object does not exist ldapCon
  • 如何使用纯 GDI 对画布区域进行颜色混合(按指定的 alpha 值着色)?

    我想使用纯颜色混合画布区域 按指定的 alpha 值着色 Windows GDI http msdn microsoft com en us library dd145203 28v vs 85 29 aspx 因此没有 GDI Direc
  • PowerShell 脚本将文件(但不包括子文件夹)复制到 SFTP,并在完成后移动到子文件夹

    我正在使用以下脚本将文件从本地文件夹复制到 SFTP 上传文件后 我想将文件移动到子文件夹中 我只想上传以下文件C Users Administrator Desktop ftp文件夹 而不是其他子文件夹中的文件 param backupP
  • 如何防止模型无效?

    我是最佳实践的坚定倡导者 尤其是在角度方面 但我无法使用全新的 validators管道功能应有的样子 情况非常简单 1 个输入通过指令增强 使用 parser formatter还有一些 validators
  • 计数累计和

    我想知道是否可以对计数进行累积和 我想举的一个例子是今年影响美国的风暴 我想要一个列出 2014 年月份的结果集 以及该月之前影响美国的风暴累计总数 我希望得到 3 列的内容 Month NumberofStorms 和 Cumulativ
  • Indy FTP EIAcceptTimeout 异常

    我正在测试 IndyFTP 将文件上传到服务器 这文件已上传但有 0 字节因为出现了 EIdAccessTimeout 异常 Accept timed out 我该如何防止该异常 我的代码是否不正确 代码如下所示 procedure TFo
  • 从 perl 中的外部 *nix 命令获取 STDOUT、STDERR 和响应代码

    我想从 Perl 脚本中执行外部命令 将 stdout 和 stderr 的输出放入 variable我的选择 并将命令的退出代码放入 多变的 我经历过解决方案perlfaq8 http perldoc perl org perlfaq8