个人最新博客地址http://www.skylway.com/
分类: Python/Ruby
2012-11-19 17:17:36
语法:
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 ARGV和ARGVOUT。用户自定义的文件句柄不得与这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;