Perl中的特殊变量

前端之家收集整理的这篇文章主要介绍了Perl中的特殊变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Perl中有很多特殊的内置变量,有时候能够简单地使用这些变量,会出现意想不到的效果!但尽量不要更改Perl的内置变量,除非它被本地化在一个代码段中(local{...})。

常见的内置变量有 

$_在很多地方用作默认参数,

@_和@ARGV是函数传入的参数的集合,

@INC包含了perl解释器中指定的标准路径名,即use和require给定的文件目录。

use lib '/my/dir';

可在程序中指定 BEGIN { push @INC,'/my/dir' }

除此之外,有一些其他非常好用的内置变量

1. $. 跟踪当前行号。

2. $/ 输入记录分隔符。

如果使用文件输入操作符<FILE>从一个文件中一次读入一行数据,而每一行都包含一个字符“\n”,这个“\n”其实就是“$/”指定的文件输入分隔符。

如有以下内容

This is the line A

%%

This is the line B

%%

This is the line C

每行是被%%隔开,那么如果想一次读入一段引文,则可暂时修改"$/"的默认值。如下:

$tmp = $/;

$/ = "%%\n";

while (<FILE>){

chomp;

print;

}

$/ = $tmp;

同样,使用chomp则会删除"$/"中指定的分隔符了。

还有一种用法:如

open (HTML_FILE,"< $link") || die "Can't open file for reading: $!";

my $html_file = do { local $/=undef; <HTML_FILE>};

close (HTML_FILE);

3. $\ 输出记录分隔符。

即包含了每次调用print输出时候,在其最后要增加的字符串。当然默认是空。可以这样用:

sub pringln{

local $\ = "\n";# 此处即使用代码块的本地变量

print @_;

}

4. $, 保持了print输出的一组参数之间的分隔符。默认是 “,” 如

my @arr = (1,2,3);

{

local $,= ',';

print @arr;#输出 1,3

}

5. $" 当一个数组被双引号包含传递给print时,展开该数组后用来分隔元素的字符。

my @arr = (1,3);

{

local $" = '+';

print "@arr";#输出1+2+3

}

同样,hash中也可以用

my %hash=(one=>1,two=>2,three=>3);

{

local $" = '<';

print "@hash{qw(one two three)}";#输出1<2<3

}

6. <*>

my @dir = <*>;#把当前文件夹下所有文件的名字赋值给数组@dir

my $dd = <*>;#把文件夹下第一个文件的名字赋值给$dd

猜你在找的Perl相关文章