为什么Perl在字符串插值期间评估${…}中的代码?

前端之家收集整理的这篇文章主要介绍了为什么Perl在字符串插值期间评估${…}中的代码?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么以下代码段可以正常工作?使用这个可能有什么邪恶?但严重的是,有没有任何理由,${}中的代码会被评估,然后用作标量参考?
use strict;
no strict 'refs';

our $message = "Hello world!";
print "${ lc 'MESSAGE' }\n";

解决方法

没关系,unless you use symbolic references.假设以下代码
my %messages = (hello => "Hello world!",bye => "Bye-bye,world!");
sub get_message_ref { return \$messages{$_[0]} }; # returns scalarref
print "${ get_message_ref('bye') }\n";

同意,scalarrefs的用处并不明显,但它对于arrayrefs非常有用.

print "keys: @{[keys %messages]}\n";
原文链接:https://www.f2er.com/Perl/171675.html

猜你在找的Perl相关文章