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

perl – 如何在实际写入文本行之前延迟创建文本文件? (懒惰创作

发布时间:2020-12-16 06:20:46 所属栏目:大数据 来源:网络整理
导读:我有一个perl脚本,在文件上附加文本: open (EXFILE,"$outFile"); 在打开时创建一个空文件,我想避免这种情况.我希望只有在第一次将一行写入文件句柄时才会创建该文件: print EXFILE $line 如果没有任何内容写入文件句柄,则不应创建该文件… 可能吗 ?怎么样
我有一个perl脚本,在文件上附加文本:

open (EXFILE,">>$outFile");

在打开时创建一个空文件,我想避免这种情况.我希望只有在第一次将一行写入文件句柄时才会创建该文件:

print EXFILE $line

如果没有任何内容写入文件句柄,则不应创建该文件…

可能吗 ?怎么样 ?

解决方法

创建一个为您开放的子项.

sub myappend {
    my ($fname,@args) = @_;
    open my $fh,'>>',$fname or die $!;
    print $fh @args;
    close $fh or die $!;
}

myappend($outfile,$line);

或者,不是打印,而是按下阵列并等到最后打印.

while ( ... ) {
    push @print,$line;
}

if (@print) {
    open my $fh,$outfile or die $!;
    print $fh @print;
}

或者,对于多个文件

while ( ... ) {
    push @{$print{$outfile}},$line;
}

for my $key (%print) {
    open my $fh,$key or die $!;
    print $fh @{$print{$key}};
}

(编辑:李大同)

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

    推荐文章
      热点阅读