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

前端之家收集整理的这篇文章主要介绍了Perl子程序可以返回数据但是继续处理吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法让子程序在处理时发回数据?例如(此示例仅用于说明) – 子例程读取文件.当它正在读取文件时,如果满足某些条件,则“返回”该行并继续处理.我知道有些人会回答 – 你为什么要那样做?你为什么不……?,但我真的想知道这是否可能.

解决方法

实现此类功能的常用方法是使用回调函数
{
    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 @_};

猜你在找的Perl相关文章