免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(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
2 [报告]
发表于 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
3 [报告]
发表于 2011-01-28 10:32 |只看该作者
回复 2# zuerrong


    Thank you very much !!

论坛徽章:
0
4 [报告]
发表于 2011-01-28 11:10 |只看该作者
回复 2# zuerrong


    还有一个吧,可以goto

论坛徽章:
0
5 [报告]
发表于 2011-01-28 14:14 |只看该作者
幸亏你贴出来让大家评判了,不然你是不是觉得这样写代码的很牛?

论坛徽章:
0
6 [报告]
发表于 2011-01-28 14:20 |只看该作者
有点觉得没必要
幸亏你贴出来让大家评判了,不然你是不是觉得这样写代码的很牛?
yiten 发表于 2011-01-28 14:14

论坛徽章:
0
7 [报告]
发表于 2011-01-28 14:33 |只看该作者
回复 6# zzy7186


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP