gpt4 book ai didi

perl - 如何从 unix shell 调用带参数的子程序

转载 作者:行者123 更新时间:2023-12-04 01:15:41 24 4
gpt4 key购买 nike

我正在使用 Perl 脚本的不同子例程。可以通过 Unix shell 从 Perl 脚本调用单个子例程,例如:

简化示例:

perl automated_mailing.pl inf

然后 automated_mailing.pl 中的函数 inform_user 被调用。这是通过调度表实现的:

my %functions = (
inf=> \&inform_user,
);

inform_user 看起来像

sub inform_user{
print "inform user: Angelo";

...some other stuff...
}

现在的问题是,如何用变量替换“Angelo”并从 shell 中调用它,例如:

sub inform_user{
my ($to)=@_;
print "inform user: $to";
}

这个调用不起作用:

perl automated_mailing.pl inf("Brian")

这是如何正确完成的?

最佳答案

  1. 您需要将参数作为单独的命令行参数传递:

    perl automated_mailing.pl inf Brian
  2. 您需要将命令行参数传递给您调用的子例程:

    my ($func, @args) = @ARGV;

    # And then later...

    if (exists $functions{$func}) {
    $functions{$func}->(@args);
    } else {
    die "$func is not a recognised function\n";
    }

您没有显示实际使用调度表的代码 - 所以我的第二点是一些猜测。

关于perl - 如何从 unix shell 调用带参数的子程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63448953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com