问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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)这种形式?

那怎么才可以字符串 转 数组 ??

另外还有哪些论坛可以找到帮助?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2024智能手表购买攻略:高性价比榜单揭晓,苹果VS华为VS小米VS佳明VS OP... apple watch os3怎么样 苹果watchOS3.0评测介绍_apple watch os3怎 ... 嘉兴有什么好玩的微信公众平台 嘉兴平湖有哪些论坛 海宁海宁论坛 嘉兴最有名的论坛是什么 嘉兴的网有哪些 荣誉勋章血战太平洋存档放哪 求荣誉勋章血战太平洋的通关存档 荣誉勋章之血战太平洋一般存盘文件夹在C盘的那里 android怎么在网络请求头里加参数 VB怎么与PHP通信如发送GET值给PHP 我是用微信绑定的银行卡开的微博连续会员包月,到期自动续费,请问怎么关闭?支付管理也没有 vivoy97开屏密码和密保问题都忘记了,怎么办?而且开不了机 vivoy97手机忘记密码怎么办 忘记VIVOY97手机锁屏密码怎么办 支付宝里面怎样才能可以借钱还有什么靠谱的可以借到五万块钱? 歇后语在线网站 苏州新区哪些厂不是台资的? 端午节车企都发了什么福利?普拉多正式停车,丰田三款新车曝光 清明节不该定为法定节日的有力证据 美股直接开户的方法,你知道哪些呢? 贾元春端午节赐礼主要影射了哪两个人哪些事儿? 钉钉班级群里的开学锦囊怎么关闭 丁丁很喜欢看电视可是妈妈觉得看电视端午节学习因此而生气钉钉应该怎么跟妈妈? 钉钉发什么表情会掉东西 cn_windows_7_ultimate_x64_dvd_x15-66043.iso与cn_windows_7_ultimate_x86_dvd_x15-65907.iso系统区别? 我下了载了个DELL官方原版的Windows7 Ultimate X86 OEM中文旗舰版 如何激活呢, Windows7 Ultimate X86 win7 windows_7_ultimate_x86_dvd.iso是32位的吗 口袋妖怪钻石版攻略 我今年高考考了386分!能报考什么样的大学啊 首信易支付平台的官网是什么? 伏魔记中怎样投掷刀 刘备的生平 小学入团申请书如何书写(范文) ai字幕保存的视频在哪里 求助! 怎样才能知道一个网站的IP地址?? 华为路由器ar28-11谁知道怎么做端口映射? 怎么让字幕留在视频里??? win10系统如何查看迅雷看看字幕文件存放位置 要把字幕文件永久保存到电影文件中怎么做呀 怎么把弄好的字幕文件放到视频里然后永远保存??我的字幕文件可以看但是只有2KB 在线加载的字幕能不能保存在视频里面? 法院可以永远冻结被告人的微信帐户吗? 我的微信帐号被*冻结 了+里面还有两千多块钱+如果我没有钱交罚金+这个账号以后还可以用吗? 两个,*把其中一个微信钱包给冻结了,另一个微信会不会也冻结? 法院冻结了怎么样解除? 两个,*把其中一个微信钱包给冻结了,另一个微信会不会也冻结? 26个字母配上汉字的读音