将多个 STDIN 输入从 powershell 脚本传递到 perl 脚本

Passing multiple STDIN inputs from powershell script into perl script

我有一个现有的 perl 脚本(我无法修改),它有两个 STDIN 调用。我想 运行 来自 powershell 脚本的这个 perl 脚本,并向它提供两个“用户输入”,但使用变量。

对于单个输入我试过

'input' | perl .pl

这正确地使用了 'input' 作为 STDIN 调用的第一个值。问题是它只能工作一次。

如何通过 powershell 脚本传递两组 STDIN 输入?

您问的是如何在 PowerShell 中向程序的 STDIN 提供两行。

您可以使用以下任一方式:

"line1", "line2" | perl ...
"line1`nline2`n" | perl ...

演示:

chomp( my $x = <STDIN> );
chomp( my $y = <STDIN> );
print( "<x:$x>\n" );
print( "<y:$y>\n" );
> "line1", "line2" | perl a.pl
<x:line1>
<y:line2>
> "line1`nline2`n" | perl a.pl
<x:line1>
<y:line2>

请注意,BOM 是由 PowerShell 5 添加的。不知道如何防止这种情况发生。较新版本的 PowerShell 并非如此。