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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |