免费注册 查看新帖 |

Chinaunix

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

求教如何调用pm文件中的hash [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-12 16:46 |只看该作者 |倒序浏览
  1. #!/usr/bin/perl -w

  2. package Tables;
  3. use strict;

  4. our %students = (
  5.   "studid" => "s000001",
  6.   "studname"  => "n000001",
  7.   "studscore" => "100",
  8. );
  9. 1;
复制代码
以上为Table.pm的内容
  1. #!/usr/bin/perl -w

  2. use strict;
  3. use Tables;

  4. sub write_ctl_file
  5. {
  6.   my $table_name = $_[0];

  7.   foreach (keys %{$table_name})
  8.   {
  9.      print $_ . "\n";
  10.   }
  11. }

  12. write_ctl_file("students");
复制代码
以上为ctl.pl的内容,我不会调用pm中的hash,取出keys或values值

顺便问一下,perl编写中一般涉及到哪几个后缀名的,什么时候使用什么后缀名的?

论坛徽章:
0
2 [报告]
发表于 2014-03-12 17:19 |只看该作者
回复 1# flysky_coool



自己顶啊,每人知道么

   

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
3 [报告]
发表于 2014-03-12 17:21 |只看该作者
先试试 不要把 hashname 用 变量.

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
4 [报告]
发表于 2014-03-12 22:08 |只看该作者
  1. cat Table.pm
  2. package Table;
  3. use strict;

  4. our %students = (
  5.   "studid" => "s000001",
  6.   "studname"  => "n000001",
  7.   "studscore" => "100",
  8. );

  9. sub hash{
  10.         return \%students;
  11. }
  12. 1;


  13. cat ctl.pl
  14. #!/usr/bin/perl

  15. use strict;
  16. use Table;

  17. sub write_ctl_file
  18. {
  19.   my $table_name = $_[0];

  20.   foreach (keys %{$table_name})
  21.   {
  22.      print $_ . "\n";
  23.   }
  24. }

  25. write_ctl_file(Table::hash());
复制代码

论坛徽章:
0
5 [报告]
发表于 2014-03-13 10:37 |只看该作者
回复 3# q1208c


      因为 在Tables 我要定义好多表。。然后根据表名去写文件。。不定义变量 我没法完成啊

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
6 [报告]
发表于 2014-03-13 11:06 |只看该作者
回复 5# flysky_coool


    hash name 可能是没办法做为变量的. 但 hash key可以,

所以, 可以用 两层的hash.

比如 newHash{'key1'}{'key2'} = 'var1';

这样, 你可以把 key1 做为变量来用, 但 hash 的name, newHash 不变就行了. 

论坛徽章:
0
7 [报告]
发表于 2014-03-13 11:43 |只看该作者
回复 6# q1208c


没大看明白。。能说的更明白点吗

   

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
8 [报告]
发表于 2014-03-13 11:53 |只看该作者
回复 7# flysky_coool

  1. #!/usr/bin/perl -w

  2. package Tables;
  3. use strict;

  4. our %newHash;

  5. $newHash{"students"}{"studid"} = "s000001",
  6. $newHash{"students"}{"studname"}  = "n000001",
  7. $newHash{"students"}{"studscore"} = "100",
  8. );
  9. 1;   
复制代码

论坛徽章:
0
9 [报告]
发表于 2014-03-13 12:05 |只看该作者
如果不使用use strict的話

把hash name當變數是可以的
  1. %A1=("a"=>1,"b"=>2,"c"=>3,"d"=>4);
  2. %A2=("a"=>5,"b"=>6,"c"=>7,"d"=>8);

  3. $str="A1";
  4. print "when var=",$str,"\n";
  5. print join(",",keys(%$str)),"\n";
  6. print join(",",values(%$str)),"\n";

  7. print "\n\n";

  8. $str="A2";
  9. print "when var=",$str,"\n";
  10. print join(",",keys(%$str)),"\n";
  11. print join(",",values(%$str)),"\n";
复制代码
不過還是建議使用q1208c大神的方法做兩層的hash

论坛徽章:
0
10 [报告]
发表于 2014-03-13 15:09 |只看该作者
回复 8# q1208c


大神,我是个新手,想请教你一个思路。

目前,我是准备在Tables.pm文件中定义好多表,例如:Table 1,Table 2,Table 3 。。。。。每个表有对应的字段及默认值

         ctl.pl文件主要是读取Tables.pm中的字段名,使用另一个文件调用ctl.pl传入表名,然后使用ctl.pl调Tables.pm中的传入表的字段并写入文件中

         大神,你有什么好的思路吗?


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP