如何在Perl中使用符号引用?
在Perl中,如果变量保存另一个变量的名称,如何使用第一个变量访问另一个变量?
例如,让我们 $name = "bob"; @bob = ("jerk","perlfan"); 我该怎么用$name来了解bob是什么样的人? 解决方法
几点:
>你不是在谈论typeglobs,而是在谈论符号引用. 有关参考文献的更多信息,请参阅perlreftut(符号和其他). 以下是使用锁定哈希来控制基于变量内容的数据访问的示例: use strict; use warnings; use Hash::Util qw( lock_hash unlock_hash ); my %data; lock_hash( %data ); #Altering %data is a fatal exception. unlock_hash( %data ); %data = ( 'bob' => [ 'jerk','genius' ],); lock_hash( %data ); for my $name (qw/ bob margaret /) { my $info = $data{$name}; # Fatal error when accessing data for margaret. print "$name is an"; print map "t$_n",@$info; } 抛开所有警告,你需要使用符号引用的语法(但你不会): use strict; use warnings; my $name = 'bob'; our @bob = qw/jerk genius/; my $qualities; { no strict 'refs'; print "$name: ",@$name,"n"; $qualities = @$name; } print "$name is a @$qualitiesn"; 请注意,数组@bob是用我们声明的.符号引用仅适用于符号表中的值.换句话说,词法变量不适用于符号引用. 如果我没有强调这一点,请不要使用符号引用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |