Perl 奇怪的 变量赋值问题。头痛一个月了。谁能帮帮我重发
发布网友
发布时间:2022-04-26 13:37
我来回答
共2个回答
热心网友
时间:2022-06-28 16:53
第4行代码可以运行,第5行不行。
看了你的代码,你的原意是:
把{name => 'abc1',quantity => 1},{name => 'abc2',quantity => 2};作为参数传到sub里。
但是没有实现所以在第4行直接把@partofcookie赋了一个值。
“$incomingdata 的值经过测试打印出来就是{name => 'abc1',quantity => 1},{name => 'abc2',quantity => 2};” 根据你说的这句话,估计你往sub里传参直接传了个字符串吧。
第5行代码错误估计是你传参的问题。我写了下面这个传参的代码,你可以参考一下:
&func( {name => 'abc1',quantity => 1},{name => 'abc2',quantity => 2} );
sub func
{
my ($cgi, $session,$proct,$tags,$itemID, $incomingdata);
my @partofcookie= @_;
print $partofcookie[1]->{name},"\n";
}
所以你的代码可以更改为
1 sub func{ #
2 my ($cgi, $session,$proct,$tags,$itemID, $incomingdata);
#################
5 my @partofcookie= @_;
6 foreach my $proct ( @partofcookie) { ##test
7 $proct->{prod_subtotal} = $proct->{price} * $proct->{quantity};
8 $tags->{total_price} += $proct->{prod_subtotal};
9. $tags->{itemmaxtemp}=$itemmaxtemp;
10. $tags->{itemID}=$itemID;
11 push @{$tags->{cart_loop}}, $proct;
12 }
13 my @xxx;
14 @xxx = @{$tags->{cart_loop}};
15 return { orderdetail_loop => \@xxx};
16 }
调用函数时,使用:
func( {name => 'abc1',quantity => 1},{name => 'abc2',quantity => 2} );
另外感觉代码还有其他问题,推荐你使用以下两个模块:
use warning;
use strict;
#################################################################
第(2)个形式是错的。你加了引号,$incomingdata 就是一个简单的字符串了。
第(1)个里面,$incomingdata 是一个数组的引用,这个数组有2个元素,每个元素都是一个匿名哈希
论坛我推荐www.chinaunix.com 里的perl版块,里面有高手,挺热心
热心网友
时间:2022-06-28 16:53
qfmeal 你好。谢谢你的关注。
我现在感觉其实是一个perl 字符串 转 数组 的问题。我那样的赋值。perl其实是当字符串处理了。是不是这样的问题?
你的方法5 my @partofcookie= @_; 我也测试过的。也没成功
其实我感觉关键是 我传入了一个字符串(string)
my @partofcookie= @$incomingdata;
(1)
my $incomingdata = [{name => 'abc1',quantity => 1},{name => 'abc2',qua
+ntity => 2}];
my @partofcookie = @$incomingdata;
(2)
my $incomingdata = "[{name => 'abc1',quantity => 1},{name => 'abc2',qu
+antity => 2}]";
my @partofcookie = @$incomingdata; #实质是赋值了一个字符串
是不是我或者你改的其实都是(2)这种形式?
那怎么才可以字符串 转 数组 ??
另外还有哪些论坛可以找到帮助?