10、Perl模块的隐私、符号导入及相关特性解析

Perl模块的隐私、符号导入及相关特性解析

1. Perl模块的隐私特性

在Perl中,符号的访问较为自由,并不强制实施隐私机制。在线文档形象地描述:“Perl不像C++、Ada或Modula - 17等语言那样强制划分模块的私有和公共部分。Perl并不痴迷于强制隐私,它更希望你因为没被邀请而不进入它的客厅,而非它拿着猎枪阻止你。”

一个包不仅可以访问其他包的现有变量或子例程,还能轻松地在其他包的命名空间中创建新名称。例如:

package Test;
# Create a variable subroutine and subroutine in another package
$main::foo = 10;    
sub main::myFunc {  
    print "Hello \n";
}
package main;
myFunc();   #  prints "Hello"

虽然在常规应用中这样做不太合适,但如果加以控制,这种功能也能发挥作用,比如将外部包的符号名称导入到自己的命名空间。

1.1 强制实施隐私
  • 私有变量 :可以使用 my 操作符在文件作用域创建不可侵犯的私有变量。由于这些变量与包没有关联,所以不能从不同的作用域(这里指文件作用域)访问。不过,它们最多受限于文件边界。示例如下:
package A;
my $a = 10;   # A 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值