Chinaunix首页 | 论坛 | 博客
  • 博客访问: 45154
  • 博文数量: 43
  • 博客积分: 1161
  • 博客等级: 少尉
  • 技术积分: 425
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-24 11:14
文章分类
文章存档

2011年(40)

2010年(3)

分类: Python/Ruby

2011-04-26 01:03:37

文件句柄(filehandle)就是程序里代表Perl进程(process)与外界之间的I/O联系的名字.它是"这种联系"的名称,不一定是文件名.
文件句柄的命名如图Perl其他的标识符,但是因为没有任何前置字符,所以阅读的时候可能会与现在或将来的保留字相混淆,建议使用全大写字母来命名文件句柄.
有6个特殊文件句柄是Perl保留的,分别是STDIN,STDOUT,STDERR,DATA,ARGV,ARGVOUT.

Perl提供的三种文件句柄STDIN,STDOUT和STDERR都是由产生Perl进程的父进程自动打开的文件或设备.
当需要其他的文件句柄时,使用open操作告诉Perl,要求操作系统为程序和外界架起一道桥梁.

  1. #!/usr/bin/perl
  2. use strict;
  3. open CONFIG,"dino";
  4. open CONFIG,";
  5. open BEDROCK,">fred";
  6. open LOG,">>logfile";
第一行会打开名为CONFIG的文件句柄,让它指向文件dino.文件中的任何内容都能从文件句柄CONFIG读到程序中来.这和利用shell的重定向(
第二行正好利用这样的技巧,它和第一行所做的事情完全相同,只不过用了小于号来声明"此文件只是用来输入的",而这正是默认的操作.
第三行会打开文件句柄BEDROCK并输出到新文件fred.大于号的用途跟shell的重定向一样,会将输出送到一个名为fred的新文件.如果已经存在一个名为fred的文件,那么就清除原有的内容并以新内容取代之.
第四行为追加打开.

当文件句柄以读取模式打开后,可以轻易地从它读取一行数据,就像从STDIN读取标准输入流一样.
以写入或添加模式打开的文件句柄可以在print或printf函数中使用.使用时,直接将它放在关键字之后,参数列表之前.

  1. #!/usr/bin/perl
  2. use strict;
  3. die "Not existed($!)" if ! open CONFIG,"dino";
  4. while(<CONFIG>) {
  5.   chomp;
  6.   print "$_\n";
  7. }
  8. open LOG,">>logfile";
  9. print LOG "Captain's log,stardate 3.14\n";
阅读(458) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~