几个很值得学习的PERL内置特殊变量.doc

几个很值得学习的PERL内置特殊变量.doc

ID:57672508

大小:40.00 KB

页数:7页

时间:2020-08-31

几个很值得学习的PERL内置特殊变量.doc_第1页
几个很值得学习的PERL内置特殊变量.doc_第2页
几个很值得学习的PERL内置特殊变量.doc_第3页
几个很值得学习的PERL内置特殊变量.doc_第4页
几个很值得学习的PERL内置特殊变量.doc_第5页
资源描述:

《几个很值得学习的PERL内置特殊变量.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、行计数$.=>通俗的说,这个内置变量就跟数据库中的记录指针非常相似,它的值就是你当前所读文件中的当前行号。虽然使用此内置变量并不能让你少打多少字,但重要的是我们可以省去一些不必要的变量声明。另一种利用此内置变量的方法就是与连续操作符(..)一起使用。当用在列表上下文中时,(..)是列表构建操作符。它将从给出的开始和结束元素之间创建所有的元素。例如:代码my@numbers=(1..1000);@numbers将包含从1到1000之间所有的整数。但是当你在一个表达式上下文中使用此操作符时(比如,作为一个声明的条件),它的作用就完全不一样了。第一个操作数(“..“左侧的表达式)将被求

2、值,如果得出的值为假,此次操作将什么也不做并返回假值。如果得出的值为真,操作返回真值并继续依次返回下面的值直到第二个操作数(“..”操作符右面的表达式)返回真值。我们举个例子解释一下。假设你有一个文件,你只想处理这个文件的某几个部分。这几个部分以"!!START!!"为开始,"!!END!!"为结束。使用连续操作符你可以这样写这段代码:代码while(){  if(/!!START!!/../!!END!!/){  #processline  } }每一次循环,连续操作符就会检查当前行。如果当前行与“/!!START!!/”不匹配,则操作符返回假值并继续循环。当循环到

3、第一个与/!!START!!/”相匹配的行时,连续操作符就会返回真值并执行if语句块中的代码。在while语句后面的循环中,连续操作符将再次检查“/!!END!!/”的匹配行,但是它直到找到匹配行后才会返回真值。这也就是说在"!!START!!"和"!!END!!"标记之间的所有行都将被处理。当找到/!!END!!/的匹配行后,连续操作符返回假并再次开始匹配第一个正则表达式。这些与“$.”有什么关系呢?如果连续操作符的操作数有一个是常量的话,他们将被转化为整型数并于“$.”匹配。因此输出一个文件的前10行内容我们可以这样写代码:代码while(){  printif1

4、..10;}关于“$.”最后要说明的一点是,一个程序中只有一个“$.”变量。如果你在从多个文件句柄中读数据,那么“$.”变量保存了最近读过的文件句柄中的当前记录号。如果你想要更复杂的解决此问题的方法那么你可以使用类似IO::FILE对象。这些对象都有一个input_line_number方法。记录分隔符“$/”和“$”分别是输入输出记录分隔符。当你在读或者写数据时,他们主要控制用什么来定义一个“记录”。让我更详细地给大家解释一下吧。当你第一次学习perl,第一次知道文件输入操作符的时候,也许你会被告知“”就是从一个文件读入一行数据,而读入的每一行都包括一个新行字符(

5、“”)。其实你所知道的这些并不完全是真的,那只是一个很特殊的情况。实际上文件输入操作符(“<>”)读数据后会包含一个在“$/”中指定的文件输入分隔符。让我们来看一个例子:假设你有一个文本文件,内容是些有趣的引文或者一些歌词或者一些别的什么东西。比如类似下面的内容:代码Thisisthedefinitionofmylife%%Wearefartooyoungandclever%%StabasorryheartWithyourfavoritefinger在这里有三段被一行“%%”分隔的引文。那么我们该如何从这个文件中一次读取一段引文呢。(译者注:这一段引文可是一行也可以是几行,比

6、如例子中的第一段和第二段引文都是一行,而第三段引文是2行)其中一个解决方法就是,一次从文件中读取一行,然后检查读入的行是否是“%%”。因此我们需要声明一个变量用来保存每次读入的数据,当遇到“%%”后重新组合先前读入的数据为一段完整的引文。哦,你还需要记得处理最后一段引文因为它最后没有“%%”。这样的方法太过于复杂,一个简单的方法就是更改“$/”变量的内容。该变量的默认值是一个新行字符(“”),这也就是为什么“<>”操作符在读取文件内容时是一次读一行。但是我们可以修改这一变量内容为我们喜欢的任意值。比如:代码$/="%%";while(){chomp;prin

7、t;} 现在我们每次调用“<>”,perl会从文件句柄中一次读取数据直到发现“%%”为止。(不是一次读一行了)。因此,当你用chomp函数来去掉读取数据的行分隔符时,就会删除“$/”变量中指定的分隔符了。在上例中经过chomp函数处理后的数据都会将%%”删除。更改perl的特殊变量在我们继续之前,我需要提醒你的是,当你修改了这些特殊变量的值后,你会得到一个警告。问题就是这些变量中的多数是被强制在主包中的。也就是说当你更改这些变量的值时,程序中用到这个值的地方(包括你包含的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。