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 @_}; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |