加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl子程序可以返回数据但是继续处理吗?

发布时间:2020-12-15 21:59:10 所属栏目:大数据 来源:网络整理
导读:有没有办法让子程序在处理时发回数据?例如(此示例仅用于说明) – 子例程读取文件.当它正在读取文件时,如果满足某些条件,则“返回”该行并继续处理.我知道有些人会回答 – 你为什么要那样做?你为什么不……?,但我真的想知道这是否可能. 解决方法 实现此类
有没有办法让子程序在处理时发回数据?例如(此示例仅用于说明) – 子例程读取文件.当它正在读取文件时,如果满足某些条件,则“返回”该行并继续处理.我知道有些人会回答 – 你为什么要那样做?你为什么不……?,但我真的想知道这是否可能.

解决方法

实现此类功能的常用方法是使用回调函数:
{
    open my $log,'>','logfile' or die $!;
    sub log_line {print $log @_}
}

sub process_file {
    my ($filename,$callback) = @_;
    open my $file,'<',$filename or die $!;
    local $_;
    while (<$file>) {
        if (/some condition/) {
             $callback->($_)
        }
        # whatever other processing you need ....
    }
}

process_file 'myfile.txt',&;log_line;

或者甚至没有命名回调:

process_file 'myfile.txt',sub {print STDERR @_};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读