C# 从PowerShell或C从perl模块调用特定函数#

C# 从PowerShell或C从perl模块调用特定函数#,c#,perl,powershell,C#,Perl,Powershell,我有一个perl脚本文件(.pm),它有许多函数,如下所示 sub check_row { my ($class, %args) = @_; ....... sub find_value { my ($class, %args) = @_; ....... 有没有办法通过C#或Powershell调用特定函数?我不允许对.pm文件进行任何更改。我对此一无所知,因为我在internet上看到的教程只谈到运行perl模块,而没有调用任何特定函数以及传递和检索值。您不能直接从Powe

我有一个perl脚本文件(.pm),它有许多函数,如下所示

sub check_row {
    my ($class, %args) = @_;
.......
sub find_value {
    my ($class, %args) = @_;
.......

有没有办法通过C#或Powershell调用特定函数?我不允许对.pm文件进行任何更改。我对此一无所知,因为我在internet上看到的教程只谈到运行perl模块,而没有调用任何特定函数以及传递和检索值。

您不能直接从PowerShell或C使用perl模块(
your_module.pm
)。您需要运行使用模块的Perl脚本(
your_script.pl
):

#/usr/bin/env perl
严格使用;
使用警告;
使用::模块qw(查找值);
找到你的价值。。。;
或者至少将代码字符串作为命令行参数传递给Perl解释器,正如Mathias R.Jessen在评论中指出的:

perl.exe -w -MYour::Module -e 'find_value ...;'

如需进一步研究,您可以查看Win32-PowerShell-IPC-0.02。文件规定如下:


此模块启动一个捕获子PowerShell进程,您可以向该进程提交命令并接收结果。现在都是文本,但Perl擅长处理像这样杂乱的东西。

如果需要,您可以“一行”Perl调用:
Perl.exe-MYour::Module-E'say find_value(123)
@MathiasR.Jessen同意,但您仍然需要一个Perl解释器。光靠PowerShell或C#是不够的。当然,他无论如何也绕不过去