+ -
当前位置:首页 → 问答吧 → perl的typeglob只能作用在包上?

perl的typeglob只能作用在包上?

时间:2011-06-29

来源:互联网

根据我的测试,既无法使用my 声明一个 *foo,也无法通过*bar取得一个词法作用域的typeglob

这样:

#! /usr/bin/perl -w

use strict;
use 5.010;

my $a = 123;
my *b = *a;
say $b;

和这样:
#! /usr/bin/perl -w

use strict;
use 5.010;

my $a = 123;
my *b = \$a;
say $b;

都不行,
为什么?

作者: L0ading   发布时间: 2011-06-29

我没有学过这个语言,来给你看看啊

作者: 益康   发布时间: 2011-06-29



QUOTE:
根据我的测试,既无法使用my 声明一个 *foo,也无法通过*bar取得一个词法作用域的typeglob

这样:

#! ...
L0ading 发表于 2011-06-29 16:10




    *glob是不能声明的。
glob广泛用在框架设计这样大型的OO工程里。

作者: 兰花仙子   发布时间: 2011-06-29

它本质上是个引用,并且创建一个符号表入口:



QUOTE:
$ perl -MData::Dumper -le '*myc={};print Dumper \%::' |grep myc
          'myc' => *::myc,

$ perl -MData::Dumper -le '*myc={};print Dumper \%myc'
$VAR1 = {};

作者: 兰花仙子   发布时间: 2011-06-29