【问题标题】:Pass high number of arguments to Perl subroutine or?将大量参数传递给 Perl 子例程或?
【发布时间】:2014-07-16 21:53:53
【问题描述】:

我编写了一些 perl 脚本来生成一些 HTML 文件。有一个主脚本从用户那里接受参数,然后这个脚本接受参数并将其中的一些传递给其他包含子例程的脚本以生成 HTML。它工作得很好,但我一直在考虑要添加的新东西,这导致我需要更多的脚本参数。我在主脚本上最多有 7 个参数,在子程序上最多有 6 个参数,我觉得将来修改这段代码会很困难,因为它开始看起来很混乱。是否有更合理/有组织的方式将一堆参数传递给脚本?

感谢您的任何建议!

【问题讨论】:

标签: perl parameters


【解决方案1】:

传递一个哈希引用,例如

sub named_parameters { ... }
named_parameters(
    {
        foo => $val1,
        bar => $val2,
        baz => ...
    }
);

然后您可以通过名称访问参数:

my $arg_ref = shift;
do_stuff_with $arg_ref->{foo};
...

您还可以传递键/值对列表(或普通哈希),并使用它:

my %arg = @_;

这可能会导致混合命名参数和位置参数令人头疼,但这是设计函数接口的一种相当放荡的方式,无论如何我都不推荐。

【讨论】:

  • 它不会牺牲任何东西;它只是让您免于输入大量不必要的{} 和->。
猜你喜欢
  • 2021-03-09
  • 1970-01-01
  • 2019-10-05
  • 2012-05-30
  • 1970-01-01
  • 2016-11-22
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
相关资源
最近更新 更多