Perl中的特殊变量
2013-12-18 13:04
232 查看
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,2,3
}
5. $"
当一个数组被双引号包含传递给print时,展开该数组后用来分隔元素的字符。
my @arr = (1,2,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
常见的内置变量有
$_在很多地方用作默认参数,
@_和@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,2,3
}
5. $"
当一个数组被双引号包含传递给print时,展开该数组后用来分隔元素的字符。
my @arr = (1,2,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的内置特殊变量三
- Perl 特殊变量翻译成了中文
- perl的特殊变量
- [Perl] Perl 特殊变量
- Perl 内置特殊变量
- perl 特殊变量
- perl 特殊变量
- Perl 特殊变量
- perl学习笔记----特殊变量
- perl常用特殊变量列表: perl 内置变量
- perl的特殊变量
- Perl 文档中文化计划-Perl 特殊变量 (转载 )
- Perl内置特殊变量
- perl常用的内置特殊变量
- perl常用的内置特殊变量
- perl 特殊变量(转)
- (zz)Perl里的特殊变量
- perl特殊变量(待续)
- perl模式匹配中用含特殊字符的变量?(using a variable as a pattern which contains special characters?)
- perl学习笔记九----特殊变量