作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个函数正在做一些计算,然后将一些属性传递给另一个子程序,如下所示:
sub get_result {
my $id = 1;
my %diet = ( result => 28,
verdict => 'EAT MORE FRUIT DUDE...'
);
my %iq = ( result => 193,
verdict => 'Professor Einstien'
);
print_result($id, %diet, %iq);
}
sub print_result {
my $id = shift;
my %d = @_;
my %i = @_;
print "IQ: $id\n";
print "DIET RESULT: $d{result}\n";
print "DIET VERDICT: $d{verdict}\n";
print "IQ RESULT: $i{result}\n";
print "IQ VERDICT: $i{verdict}\n";
}
my $id = shift;
my %d = shift;
my %i = shift;
Odd number of elements in hash assignment
最佳答案
当您将数组(或散列)传递给子例程时,子例程将获得值(或键值对)的列表。这就是为什么不能传递两个数组(或两个散列)的原因,因为子例程不知道第一个数组在哪里结束,第二个数组从哪里开始。
要解决此问题,您应该传入引用:
my %hash1 = ( foo => 'bar' );
my %hash2 = ( bar => 'baz' );
subroutine( \%hash1, \%hash2 );
sub subroutine {
my ( $hashref1, $hashref2 ) = @_;
print $hasref1->{foo}, $hashref2->{bar};
}
my %d = @_;
my %i = @_;
关于perl - 如何在 Perl 中使用散列作为子例程的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/944784/
我是一名优秀的程序员,十分优秀!