注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

云之南

风声,雨声,读书声,声声入耳;家事,国事,天下事,事事关心

 
 
 

日志

 
 
关于我

专业背景:计算机科学 研究方向与兴趣: JavaEE-Web软件开发, 生物信息学, 数据挖掘与机器学习, 智能信息系统 目前工作: 基因组, 转录组, NGS高通量数据分析, 生物数据挖掘, 植物系统发育和比较进化基因组学

网易考拉推荐

perl函数使用文件句柄  

2012-05-14 13:10:11|  分类: perl&bioperl |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在perl的函数定义中,如果使用文件句柄作为参数进行传递,请使用引用,而不要使用直接的变量赋值操作。原因是如果在其它包中引用这个函数,将导致文件句柄非法错误。

#!/usr/bin/perl
use strict;
use warnings;

sub read_file {
    my $h = shift;
    my @lines = <$h>;
    print @lines;
}

open(FH,"sub_read_file.pl") or die "can not open sub_read_file:$!/n";
my $handle = \*FH;
read_file($handle);
close(FH);


为了将一个文件句柄转换为typeglob引用,只需在其名字前加"\*"
$fh=\ *MY_FH;
typeglob引用能够直接传给subroutine
hello(\*MY_FH);
也能被subroutine返回
my $fh=get_fh();
sub get_fh {
    open (FOO, "foo.txt") or die "foo: $!";
    returen \*FOO;
}
查看一个句柄是否有效
使用fileno()函数
$integer=fileno(FILEHANDLE)
fileno() 函数以字符串的形式,typeglob形式或者typeglob引用形式接受句柄。如果句柄有效,返回文件句柄的文件描述符。STDIN STDOUT STDERR描述符为0 1 2,其他文件句柄具有大于3的文件描述。如果没有有效句柄,fileno()返回undef值。
die="not a filehandle" unless defined fileno($fh);
  评论这张
 
阅读(3033)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016