perl中参数过多的函数

perl中参数过多的函数,perl,Perl,我有一个函数有太多的参数。我看过PHP中的解析方法,该方法将类对象传递到函数中,而不是传递许多参数。perl有什么方法吗 谢谢有很多方法可以解决这个问题-如您所知,如果您想使用基本的有序参数,perl已经有了 然而,有时候你想要更整洁一点的东西——你可以传递一个散列来代替 use Data::Dumper; sub myspecial { my %parameters = ( size => $default_size, toggle =

我有一个函数有太多的参数。我看过PHP中的解析方法,该方法将类对象传递到函数中,而不是传递许多参数。perl有什么方法吗


谢谢

有很多方法可以解决这个问题-如您所知,如果您想使用基本的有序参数,perl已经有了

然而,有时候你想要更整洁一点的东西——你可以传递一个散列来代替

use Data::Dumper; 

sub myspecial {

  my %parameters = ( size => $default_size,
                     toggle => 1, 
                     @_ ); 

  print Dumper \%parameters;
}
然后,您可以将子例程作为参数调用:

myspecial ( size => 42, cabbage => "green" ); 
因为'size'参数是在sub中定义的,但是@u被添加到哈希声明的末尾,所以传入的任何大小都将覆盖默认值

通过这种方式,您可以按任意顺序给出命名参数


但解决这个问题的方法总是多种多样的——有时你会想传入一个对散列或对象的引用

你的问题没有任何细节-太宽泛,无法详细回答

use Data::Dumper; 

sub myspecial {

  my %parameters = ( size => $default_size,
                     toggle => 1, 
                     @_ ); 

  print Dumper \%parameters;
}
也许下面的代码应该可以满足您的需求

use strict;
use warnings;

use feature 'say';

my $debug = 0;
my %hash;

my @fields = qw( first last age speciality phone email address );

while( <DATA> ) {
    @hash{@fields} = split ':';
    say Dumper(\%hash) if $debug;
    details(\%hash);
}

sub details {
    my $data = shift;

    foreach my $field (@fields) {
        printf "%-15s : %s\n", $field, $data->{$field};
    }
}

__DATA__
John:Smith:35:Web Developer:(1) 641-723-3472:john.smith@inter.net:2241-2832 Moon crescent, 50003 Iova, US 
Alice:Gomer:28:Accountant:(1) 641-723-7391:alice.gomer@inter.net:2241-630 Jupiter drive, 50006 Iova, US 

你能不能稍微解释一下你所拥有的和正在做的事情?当然,您可以将参数捆绑到各种数据结构或对象中,但是有很多方法可以做到这一点或其他一些。这个问题太宽泛了,我建议你编辑它,以便很好地解释你拥有/需要什么。我觉得参数太多的函数不容易阅读和使用。好的。但是有很多方法来组织它——如何做好这一点在很大程度上取决于函数的功能和参数的细节。将它们放入数组还是散列?或者是一个带有arrayrefs的散列,用来对不同类型的参数进行分组?或者是一节课?或者程序应该重新组织,这样就不会有那么多松散的参数,而是会有一些对象?你问这样的问题很好,因为函数的良好接口非常重要。但是有很多方法可以解决这个问题,一般来说,问题中的更多细节将非常有助于提出更具体、更有效的建议。。。然后用默认值搜索数据库命名参数列表,这就是我想要的。谢谢@sobrique