免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1630 | 回复: 4
打印 上一主题 下一主题

perl 哈希中的键值对为中文,如何查询 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-07-06 07:24 |只看该作者 |倒序浏览

天津--- 天津市--- 和平区  河东区  河西区  南开区  河北区  红桥区  东丽区  西青
  津南区

如上所述,已将上述数据用散列储存,格式为@{$ref{'天津'}{'天津市'}},
现在要实现查询,
@a = @{$ref{'天津'}{'天津市'}},中文应该如何转换呢

论坛徽章:
7
巳蛇
日期:2013-11-28 09:22:59天秤座
日期:2014-10-25 15:40:452015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之德黑兰石油
日期:2015-07-15 08:46:452015亚冠之平阳省
日期:2015-11-08 16:27:53白银圣斗士
日期:2015-11-14 09:58:12
2 [报告]
发表于 2016-07-06 08:52 |只看该作者
我在Windows平台,perl脚本用ANSI编码格式,可以直接输出。
  1. #!/usr/bin/perl
  2. my $ref={};
  3. while(<DATA>){
  4.         my ($pro,$cit,$are)=split (/\-+/,$_);
  5.         $ref->{$pro}->{$cit}=[split /\s+/,$are];
  6. }

  7. print "@{$ref->{'天津'}->{'天津市'}}\n";

  8. __DATA__
  9. 天津---天津市---和平区  河东区  河西区  南开区  河北区  红桥区  东丽区  西青  津南区
复制代码

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
3 [报告]
发表于 2016-07-06 10:10 |只看该作者
本帖最后由 sunzhiguolu 于 2016-07-06 10:12 编辑
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my %hData;
  5. while (<DATA>){
  6.         my @aKV = /[^\h\n-]+/g;
  7.         $hData{$aKV[0]}{$aKV[1]} = [@aKV[2 .. $#aKV]];
  8. }

  9. print "@{$hData{'天津'}{'天津市'}}\n";

  10. __DATA__
  11. 天津---天津市---和平区  河东区  河西区  南开区  河北区  红桥区  东丽区  西青 津南区
复制代码

论坛徽章:
0
4 [报告]
发表于 2016-07-06 20:05 |只看该作者
感谢两位的热心解答

论坛徽章:
0
5 [报告]
发表于 2016-07-06 20:07 |只看该作者
本帖最后由 zmj9152 于 2016-07-06 21:25 编辑
  1. use YAML;

  2. my %ref;
  3. while(<DATA>){
  4.         my ($pro,$cit,$are)=split (/ /,$_);
  5.        
  6.       
  7.         push @{$ref{$pro}{$cit}},$are;
  8. }

  9. print Dump(\%ref);#已将数据存入散列

  10. print "@{$ref{'天津'}{'天津市'}}\n";#已实现输出,必须与push一行保持一致,同时用箭头或不用箭头
  11. __DATA__
  12. 天津 天津市 和平区
  13. 天津 天津市 河东区
  14. 天津 天津市 河西区
  15. 天津 天津市 南开区
  16. 天津 天津市 河北区
  17. 天津 天津市 红桥区
  18. 天津 天津市 东丽区
  19. 天津 天津市 西青区
  20. 天津 天津市 津南区
复制代码

IMG_20160706_152211.jpg (101.52 KB, 下载次数: 26)

这里面的代码可以正确查询数据

这里面的代码可以正确查询数据
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP