Perl Barewords
像其他语言一样,Perl 也是容易出错的。Perl 中的一些功能是很难正确使用的。Perl的解析器在一些符号的帮助下理解了Perl的操作符、函数、方法。但情况并非总是如此。当我们使用 Barewords 时,解析器不得不做猜测工作 。 Bareword是一个没有必要的符号或标点符号的标识符或变量。简单地说,我们可以说 Barewords是没有引号的词 (即无引号的字符串)。尽管Perl中的严格规则不鼓励使用模棱两可的裸词,但有些裸词还是可以被解析器所接受的。
例如 。
#!usr/bin/perl
my bw = BWeg;
print "bw\n";
#!usr/bin/perl
sub BWeg
{
return "Subroutine has been executed";
}
bw = BWeg;
print "bw\n";
#!usr/bin/perl
use strict;
my bw = BWeg;
print "bw\n";
它发出的编译错误是这样的。
如何正确使用裸词?
裸词可以用在哈希键、包名、常量、命名的代码块中。
例如 。
#!usr/bin/perl
my %India = (UP =>'Taj Mahal',
Rajasthan =>'Chittorgarh',
Kerala =>'Bakel Fort');
# Prints Bakel Fort
my var1 =India{'Kerala'};
print(var1, "\n");
# Prints Taj Mahal
myvar2 = India{UP};
print(var2, "\n");
裸词包名
包名也是裸词。Perl必须确定如何解析 **Package- >method。 **为此,我们通过添加包的分隔符(::)来强制解析器将Package视为包名。
裸字命名的代码块
特殊的命名代码块AUTOLOAD、BEGIN、CHECK、DESTROY、END、INIT和UNITCHECK是裸词。
package Monkey::Butler;
BEGIN { initialize_simians( __PACKAGE__ ) }
sub AUTOLOAD { ... }
我们可以将sub从AUTOLOAD中分离出来,但这并不是一个常见的做法。
裸词常量
用常量pragma声明的常量可以作为裸词使用。
# don't use this for real authentication
#!usr/bin/perl
use constant NAME => 'GeeksForGeeks';
use constant PASSWORD => 'GeeksPl@tform';
name=;
pass=;
return unless name eq NAME &&pass eq PASSWORD;
如果给了错误的用户名和密码,它会返回false。另外,常数不会在双引号字符串中插值。