Chinaunix

标题: 问题都不会描述,请高手指教? [打印本页]

作者: djq1976    时间: 2005-02-21 17:43
标题: 问题都不会描述,请高手指教?
my $d={
a=>;{1=>;8,2=>;4,3=>;2,4=>;1},
b=>;{1=>;10,2=>;9,3=>;7,4=>;3},
c=>;{1=>;["ab","ba"],2=>;["a","a"],3=>;["add","dda"]},
};
如何对以上类型进行存取,参考了cgi::session,也看了session的记录,可惜看不懂,我想把它存到数据库中,供使用,data::dump我也看不懂,好像是存数据用的,可取出来怎样用呀?print $d->;{a}->;{1}吗?好像不对吧。
作者: flw    时间: 2005-02-21 17:57
标题: 问题都不会描述,请高手指教?
print $$d{a}{1} 就可以得到 8
print $$d{a}{2} 就可以得到 4
print $$d{b}{3} 就可以得到 7
print $$d{c}{1}[0] 就可以得到 "ab";
print $$d{c}{3}[1] 就可以得到 "dda";
作者: flw    时间: 2005-02-21 18:12
标题: 问题都不会描述,请高手指教?
详解:
第一步
  1. my $d={
  2. a=>;……
  3. b=>;……
  4. c=>;……
  5. };
复制代码

说明 $d 是一个指向匿名散列表的引用,
用 $$d{a} $$d{b} $$d{c} 这样子就可以解引用。

第二步:

  1. a=>;{1=>;8,2=>;4,3=>;2,4=>;1}
复制代码

说明键 a 的值是一个匿名散列表的引用值。
  1. b=>;{1=>;10,2=>;9,3=>;7,4=>;3}
复制代码

说明键 b 的值也是一个匿名散列表的引用值。
  1. c=>;{1=>;……,2=>;……,3=>;……}
复制代码

说明键 c 的值也是一个匿名散列表的引用值。

第三步:
  1. c=>;{1=>;["ab","ba"],2=>;["a","a"],3=>;["add","dda"]}
复制代码

说明键 c 的值是一个匿名散列表的引用值,
而且这个匿名散列表有三个 key-value pair(键-值对):
  1. 1=>;["ab","ba"]
  2. 2=>;["a","a"]
  3. 3=>;["add","dda"]
复制代码

并且这三个键的值都是匿名数组的引用值。

结束语:
说得不清楚,自己理解一下吧。
实际上这些东西用 Perl 语言本身解释就很明了,
如果用自然语言如汉语或者英语解释,就像是绕口令一样,越解释越乱套。
作者: apile    时间: 2005-02-22 15:56
标题: 问题都不会描述,请高手指教?
print $d->;{a}->;{1};
是正確的..也可這樣用.....
->;跟C裡面的pointer的deref一樣...
所以
$d->;{a}->;{1} 等同
$$d{a}{1}
如果中間有array..就變成
$d->;[a]->;{1}....
這個advance perl programming書中有提到...
作者: reason001    时间: 2005-02-23 11:38
标题: 问题都不会描述,请高手指教?
up!
作者: yzcdf    时间: 2005-02-24 09:06
标题: 问题都不会描述,请高手指教?
up!!
作者: gunguymadman    时间: 2005-02-24 18:39
标题: 问题都不会描述,请高手指教?
一步步来就是了    中间的加{}隔开    从最大的级别往里套   大而下之的以变量代替  然后在用hash或array代替变量




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2