【问题标题】:Call specific function from perl module from PowerShell or C#从 PowerShell 或 C# 的 perl 模块调用特定函数
【发布时间】:2021-04-13 03:18:27
【问题描述】:

我有一个 perl 脚本文件 (.pm),它有很多功能,如下所示

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

有什么方法可以通过 C# 或 Powershell 调用特定函数?我不允许对 .pm 文件进行任何更改。我一无所知,因为我在互联网上看到的教程只讨论了运行 perl 模块但没有调用任何特定函数以及传递和检索值。

【问题讨论】:

    标签: c# perl powershell


    【解决方案1】:

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

    #!/usr/bin/env perl
    
    use strict;
    use warnings;
    use Your::Module qw(find_value);
    
    find_value ...;
    

    或者至少将代码字符串作为命令行参数传递给 Perl 解释器,正如 Mathias R. Jessen 在 cmets 中指出的那样:

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

    【讨论】:

    • 如有必要,您可以“单行” perl 调用:perl.exe -MYour::Module -E 'say find_value(123)'
    • @MathiasR.Jessen 当然,但您仍然需要 Perl 解释器。仅 PowerShell 或 C# 是不够的。
    • 当然,无论如何他都不会解决这个问题
    【解决方案2】:

    如需进一步研究,您可以查看 Win32-PowerShell-IPC-0.02。文档说明如下:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多