免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2336 | 回复: 6

perl 这里为什么要加代码块? [复制链接]

论坛徽章:
0
发表于 2011-01-28 09:48 |显示全部楼层

  1. #!/usr/bin/perl
  2. use warnings;
  3. { package Grandpa;
  4.   $name = "Gramps";
  5.   sub greetme {
  6.         print "Hi $Child::name I'm your $name from package Grandpa.\n";
  7.         }
  8. }

  9. { package Parent;
  10. }



  11. { package Child;
  12.   $name = "Baby";
  13.   print "Hi I'm $name in the Child Package here.\n";
  14.   Parent->greetme();
  15. }

  16. package UNIVERSAL;
  17. sub AUTOLOAD {
  18.         print "The UNIVERSAL lookup package.\n";
  19.         Grandpa->greetme();
  20. }
复制代码
这么在包的都定义在代码块中,package的范围不是到下一次package或则文件结束吗? 去掉代码块结果是一样的
请问这里为何要加上代码块啊?
加上use strict;后出现如下错误:

  1. Variable "$name" is not imported at ./a line 17.
  2. Variable "$name" is not imported at ./a line 18.
  3. Global symbol "$name" requires explicit package name at ./a line 5.
  4. Global symbol "$name" requires explicit package name at ./a line 7.
  5. Global symbol "$name" requires explicit package name at ./a line 17.
  6. Global symbol "$name" requires explicit package name at ./a line 18.
  7. Execution of ./a aborted due to compilation errors.
复制代码
小弟感觉已经声明包了 为何还要加明确的包呢? 小弟是初学者。。。望大侠帮忙 谢了

论坛徽章:
0
发表于 2011-01-28 09:53 |显示全部楼层
# { package Child;
#   $name = "Baby";
#   print "Hi I'm $name in the Child Package here.\n";
#   Parent->greetme();
# }


这里代码块不是必需的,其作用是让变量在作用域外自动失效。
良好的实践:
(1)去掉这个block;
(2)用my声明变量;
(3)加上use strict。

论坛徽章:
0
发表于 2011-01-28 10:32 |显示全部楼层
回复 2# zuerrong


    Thank you very much !!

论坛徽章:
0
发表于 2011-01-28 11:10 |显示全部楼层
回复 2# zuerrong


    还有一个吧,可以goto

论坛徽章:
0
发表于 2011-01-28 14:14 |显示全部楼层
幸亏你贴出来让大家评判了,不然你是不是觉得这样写代码的很牛?

论坛徽章:
0
发表于 2011-01-28 14:20 |显示全部楼层
有点觉得没必要
幸亏你贴出来让大家评判了,不然你是不是觉得这样写代码的很牛?
yiten 发表于 2011-01-28 14:14

论坛徽章:
0
发表于 2011-01-28 14:33 |显示全部楼层
回复 6# zzy7186


perl新手很多很多都是从画葫芦开始的。
网上有很多的perl资料,但是并不是都很优秀。
有些甚至都是很老的写法和用法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

ITPUB技术栈

ITPUB技术栈是ITPUB企业打造的垂直于IT领域的知识社群平台,在这里,你既可以是创作者也可以是消费者。如果你的IT生涯丰富多彩,喷薄的个人价值尽可在小栈内体现;如果你渴望找到志同道合的伙伴,拓宽人脉,小栈比跑会场更快。 小栈特色:
1.极高的用户转化率,实现更直接的知识变现;
2.随时随地,刷个朋友圈的时间,实现更长效的信息沉淀;
3.戳痛、难点的专业咨询,更接近成功解决方案的时刻;
4.贴近意见领袖,个人高速成长,迈入更富有价值的人际圈。

----------------------------------------

技术小栈>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP