• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >perl > perl中的范围声明our-my-local介绍

perl中的范围声明our-my-local介绍

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了perl,perl语言入门,perl下载,perl语言,perl安装等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

老实说,这个东西有点折腾人,主要是书上的表述很晦涩,其实搞懂不难。
 
our,"把名字限于某个范围“,其实就是明确声明一个"全局变量",虽然是在某个模块或者函数里面定义的,外面的也可以访问,如果已经声明过了,再次用"our",表示此处用的是全局的那个,不是同名的私有或者局部变量
our $PROGRAM_NAME = "waiter";
{
my  $PROGRAM_NAME = "something";
our $PROGRAM_NAME = "server"; #这里的our和外面的相同,和前句不同。
# 这里调用的代码看到的是"server"
}
# 这里执行的代码看到的仍然是"server".
</div>
my ,"把名字和值都限于限于某个范围",简单说,就是只能本层模块或者函数可以看到这个变量,高一层的或者低一层的都看不到的。
sub greeting1{
    my ($hello) = "How are you do?";
    greeting2();
}
 
sub greeting2{
    print "$hello\n";
}
$hello = "How are you doing?";
greeting2();
greeting1();
greeting2();
</div>
运行结果:
How are you doing?
How are you doing?
How are you doing?
</div>
一个 How are you do? 都没有,在greeting1中call greeting2时,greeting2看不到greeting1的私有$hello变量,只能看到外面的全局变量$hello
 
local,"把值局限于某个范围",也有叫"动态词法范围",有点不好懂。我的理解,就是本层和本层下层的函数可以看到本层的变量,但是本层上一层的不可以。到底范围是多少,不仅取决于本层的函数,还要看下一层的程序长度和深度,所以叫"动态范围"。
sub greeting1{
    local ($hello) = "How are you do?";
    greeting2();
}

sub greeting2{
    print "$hello\n";
}
$hello = "How are you doing?";
greeting2();
greeting1();
greeting2();
</div>
运行结果:
How are you doing?
How are you do?
How are you doing?
</div>
跟用 my 时不一样了吧? 此时在greeting1调用greeting2时,greeting2可以看到greeting1的局部变量$hello,外部的全局变量当然就隐藏了。

</div>

您可能想查找下面的文章:

  • Perl与JS的对比分析(数组、哈希)
  • 使用Perl生成随机密码
  • perl 简明教程 perl教程集合
  • Perl中的单行注释和多行注释语法
  • Perl基本数组排序方法介绍
  • Perl中怎样从数组中删除某个值?
  • Perl中捕获警告信息、异常信息并写入日志详解
  • Perl删除前导和拖尾空白(删除左右空格、空白字符)
  • About Perl(翻译Perl官网介绍)
  • Perl学习笔记之文件操作

相关文章

  • 不错的一篇学习CGI脚本(脚本)
  • Perl中的模式匹配学习笔记
  • perl对m x n类似表进行按列排序的代码
  • perl 子程序 sub
  • 求婚示爱的Perl代码之改写篇
  • perl中单行注释和多行注释使用介绍
  • Perl 获取shell命令的执行结果
  • Perl的Mail::POP3Client模块和Gmail通信实例
  • Perl遍历目录和使用Linux命令分析日志的代码实例分享
  • 使用perl实现拆分数据表(mysql)并迁移数据实例

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Perl遍历目录和使用Linux命令分析日志的代码实例分享
    • 学习perl的unless控制结构
    • 讲Perl中的本地时间与UNIX时间戳间相互转换的方法
    • perl高级排序,&lt;=&gt;操作符,飞船操作符
    • 不错的一篇学习CGI脚本(脚本)
    • 一行代码解决 perl输入 排序 输出问题
    • Perl中的模式匹配学习笔记
    • 使用 use re debug 查看正则表达式的匹配过程
    • Perl List::Util模块使用实例
    • Perl localtime时间函数的应用介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有