找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19460|回复: 8

[技术讨论] Perl散列的数组问题,比较绕

[复制链接]
发表于 2018-11-16 12:35:05 | 显示全部楼层 |阅读模式
  1. @AoH = (
  2. {
  3.         husband => "barney",
  4.         wife    => "betty",
  5.         son    => "bamm bamm",  
  6. },
  7. {
  8.         husband => "george",
  9.         wife    => "jane",
  10.         son    => "elroy",
  11. },
  12. {
  13.         husband => "homer",
  14.         wife    => "marge",
  15.         son    => "bart",
  16. },
  17. );
  18. for (@AoH)
  19. {
  20.     print $$_{husband}."--------/n";
  21.     }
  22.     for $i ( 0 .. $#AoH ) {
  23.         print "$i is { ";
  24.                 for $role ( keys %{ $AoH[$i] } ) {
  25.                         print "$role=$AoH[$i]{$role} ";
  26.                 }
  27.                 print "}/n";
  28. }
  29. print $AoH[0]{husband}."!!\n";
复制代码
问题来了,$AOH[0]{husband}前为什么不用加$,如果不用加,为什么keys %{ $AoH[$i] }加%,感觉矛盾啊
发表于 2018-11-16 12:47:23 | 显示全部楼层
本帖最后由 523066680 于 2018-11-16 13:03 编辑

你上一个问题什么情况了?别人回答后也不响应问题是否得到解决。

还有你这个帖子,
print $AOH[0]{husband}."!!\n";
AOH 应该改成 AoH

印象中是因为多层镶嵌直接表达的时候可以不加,比如 $a{b}{c} 或者 $a[1]{name}
间接使用的时候就必须加,比如
my $ref = $AoH[0];
printf $ref{husband}; 是无效的,需要使用 $ref->{husband} 或者 $$ref{husband}

但是为了方便记忆,建议在有引用的情况下统一加 $ 或者 ->

$AoH[0]->{husband}
${$AoH[0]}{husband}
 楼主| 发表于 2018-11-16 13:14:32 | 显示全部楼层
本帖最后由 Mekel 于 2018-11-16 13:33 编辑

明白了,但是keys %{ $AoH[$i] }为什么还要加%,$AoH[$i]本身不是已经代表散列了吗
上个问题参数是能够完美传递的,即使不加our,因为我原函数里有$a=shift这样的语句,写pm里就要写成$a=shift @ARGV才行
 楼主| 发表于 2018-11-16 14:17:29 | 显示全部楼层
恩,$AoH[$i]存储的是匿名哈希的引用,不是哈希,所以加%
发表于 2018-11-16 22:42:13 | 显示全部楼层
老哥,学 Perl 6 就不会这么绕了
发表于 2018-11-17 08:29:27 | 显示全部楼层
本帖最后由 523066680 于 2018-11-17 08:34 编辑

回复 5# sxw

Perl 6 很成熟了吗?各种强大的模块不知道推出 perl6 版本没有
暂时不打算转。
发表于 2018-11-18 09:55:58 | 显示全部楼层
回复 6# 523066680


    现在也就 1000 左右的模块
发表于 2018-11-18 11:22:08 | 显示全部楼层
本帖最后由 523066680 于 2018-11-18 11:26 编辑

回复 7# sxw

     保持观望。
 楼主| 发表于 2018-11-19 09:08:13 | 显示全部楼层
回复 5# sxw


    perl6也再用,有些很方便,但是不顺手
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 20:41 , Processed in 0.018627 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表