perl - Wantarray等效?

标签 perl powershell

在 Perl 中(我多么想念它),我可以检测函数的调用上下文,特别是判断函数的返回值是被丢弃(无效上下文)还是分配给标量或列表变量。

这允许一些非常优雅的表达。 Powershell中是否有等价物(我还没有找到)?

最佳答案

您可以使用 $host.runspace.runningpipelines(或 $host.runspace.GetCurrentlyRunningPipeline())来访问“本地管道”。本地管道有一个“命令”成员。此数组中的每个条目,类型为 Management.Automation.Runspaces.Command,代表一个命令/脚本,它是正在运行的管道的一部分。 Runspaces.Command 有一个成员 CommandText,其中包含正在运行的管道的全文(而 $myinvocation 仅具有当前行)。您可以解析 CommandText 以获取诸如 out-null、[void] cast 和分配给 $null 之类的内容。请注意,powershell 解析器记录在一些博客中,可用于帮助解析。

runningpipelines 和 GetCurrentlyRunningPipeline() 都是 RunSpace 的私有(private)成员,因此您需要通过反射访问它们。

关于perl - Wantarray等效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16049886/

相关文章:

c# - 如何在以编程方式从 C# 调用 CmdLet 时捕获 Powershell CmdLet 的详细输出

PowerShell:导入没有标题的 CSV 并删除部分重复行

perl - 为什么 Perl 通过 grep 创建一个空数组引用?

arrays - Powershell 相当于 Bash Brace Expansion 用于生成列表/数组

perl - 如何正确地对 Perl 脚本进行反混淆?

c - 当 perl 脚本周围的 C 包装器的 setgid 位发生变化时,为什么 @INC 会发生变化?

batch-file - 如何使用qpdf解密多个pdf文件?

batch-file - 在 Windows 2008 服务器中运行 powershell 脚本时出现 Windows 任务计划程序问题

javascript - 如何编写 Perl 脚本来提交 JavaScript 页面上另一个表单内的表单

perl - 在 perl 脚本中编写 awk 命令