>$outFile"); 在打开时创建了一个空文件,我想避免这种情况。我希望只在第一次将一行写入文件句柄时创建文件: pr-6ren">
gpt4 book ai didi

perl - 如何延迟创建文本文件,直到我实际向它写入一行? (懒惰创作)

转载 作者:行者123 更新时间:2023-12-04 23:28:32 26 4
gpt4 key购买 nike

我有一个在文件上附加文本的 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}};
}

关于perl - 如何延迟创建文本文件,直到我实际向它写入一行? (懒惰创作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8519493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com