Chinaunix首页 | 论坛 | 博客
  • 博客访问: 517851
  • 博文数量: 126
  • 博客积分: 851
  • 博客等级: 准尉
  • 技术积分: 1287
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-06 11:21
个人简介

个人最新博客地址http://www.skylway.com/

文章分类

全部博文(126)

文章存档

2016年(2)

2014年(60)

2013年(35)

2012年(29)

分类: Python/Ruby

2012-11-19 17:17:36

perl 的select 函数

 

语法:

     select FILREHADL

       select

       select RBITS,WBITS, EBITS,TIMEOUT

 

定义和用法
       设置输出的文件句柄(FILEHANDLER)为默认文件句柄(default FILEHANDLER)。指定文件句柄,然后返回当前的默认文件句柄的名称。
      select(RBITS,WBITS,EBITS,TIMEOUT)调用系统功能的select()使用特定位数。在select函数设置处理非管制非 阻塞I / O请求。返回的数字等待的I / O的文件句柄标量情况下,或文件句柄和等待的时间在清单中剩余的数量

 

返回值

1.       如果指定了FILEHANDLER则返回以前默认的文件句柄(FILEHANDLER)

2.       如果没有指定FILEHANDLER则返回当前默认的文件句柄(FILEHANDLER)

 

例子

#! use/bin/perl -w

 

1.  open(FILE,">F:\\Hand\\job.pls");

2.  $oldHandle = select(FILE);

3.  print "This is sent to $oldHandle\n";

4.  print $oldHandle;

5.  select($oldHandle);

6.  print("This is sent to STDOUT.\n");

 

第一行(1)打开文件句柄FILE,指定文件为F:\\Hand\\job.pls

第二行(2)使用select()设置默认的文件句柄为FILE,并且返回以前默认的文件句柄

第三行(3)将“This is sent to $oldHandle\n”打印到FILE句柄指示的文件“F:\\Hand\\job.pls”中(可以到job.pls中查看具体的信息)

第四行(4)打印出以前默认的文件句柄(STDOUT)

第五行(5)将文件句柄设置为以前默认的文件句柄(STDOUT)

第六行(6)将“This is sent to STDOUT.\n”打印到以前默认文件句柄(STDOUT)中

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gan690416372/archive/2010/01/06/5141725.aspx

 

文件句柄

       文件句柄就是Perl程序里的某个名称,代表Perl进程与外界之间的输入/输出联系。文件句柄的命名和Perl中其它变量命名没有差别(数字、下划线、字母构成,字母、下划线开头),因没有任何的前置字符,容易和一些保留字或者“标签“互相混淆,Larry建议大家用大写字母来标表示文件句柄。

       Perl保留了6个有特殊用途的文件句柄名称:STDIN STDOUT STDERR DATA ARGVARGVOUT。用户自定义的文件句柄不得与这6个文件句柄重名(书不是这么写的,纯属个人理解,Perl的原则就是减少不必要的限制,但你也不应该滥用这份自由)。

打开文件句柄

       使用open操作符告诉操作系统,你要打开的文件。例如:

                     open CONFIG, “dino”;          # 打开一个叫CONFIG的句柄,并关联至文件dino

                     open CONFIG, “        # 和上一句的效果相同,小于符号说明这个文件是                                                               # 用来输入数据的(没太看懂)

                     open BEDROCK, “>fred”;     # 大于符号是用来创建一个新文件的,如文件已存                                                               # 在,原来的内容将被覆盖

                     open LOG, “>>logfile”;         # 如果logfile已存在,新内容将添加到原文件的                                                                   # 后面;如果不存在,将创建新文件

open还有一种3个参数的写法:

                     open CONFIG, “<”, “dino”

                     open BEDROCK, “>”, $file_name;

                     open LOG, “>>”, &logfile_name();

在不需要某个文件句柄的时候,要及时关闭(close)它。

                     close BEDROCK;

虽然在程序结束时,Perl会自动关闭文件句柄,但不推荐这么做。

使用文件句柄

       当文件句柄以读取模式打开后,就可以从它里面读取一行数据,以打开passwd文件为例:

                     open PASSWD, “<”, “/etc/passwd;

                     while ()

                     {

                            chomp;

                            ……..

                     }

所谓的“整行输入操作符“由两部分组成:一对角括号和一个文件句柄。

以写入或者添加模式打开的句柄在print或者printf中使用;使用时,文件句柄直接跟在关键字之后(也就是函数的后面)、参数列表之前,例如:

                     print LOG “………….\n”;            # 将内容输出到LOG

也可以加上括号,不过看起来会有些奇怪,只要不加逗号就好了。

改变默认的输出句柄

       默认的输出句柄是STDOUT,不过我们可以把它改为我们想要的那个,例如:

                     select BEDROCK;

                     print “I will ……….(此次省略5k).\n”;

                     print “(在省略5k)”;

一旦使用了select选择了默认的输出用的文件句柄,程序就会一直以这种方式来运行。但这样不是一个好办法,当你所指定的默认文件句柄使用完毕之后,把它改回默认值。将数据输出到文件句柄时,在默认的情况下会经过缓冲区的处理。不过,只要将特殊变量”$|”设定为1,就会使当前的默认文件句柄在每次进行输出操作后,立即清空缓冲区。

                     select LOG;

                     $| = 1;

                     select STDOUT;

阅读(1958) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~