gpt4 book ai didi

perl - 使用perl将内容从一个文件复制到另一个文件

转载 作者:行者123 更新时间:2023-12-05 09:17:17 25 4
gpt4 key购买 nike

以下代码用于将文件内容从 readfile 复制到 writefile。而不是复制到最后,我想复制到一些关键字。

use strict;
use warnings;

use File::Slurp;

my @lines = read_file('readfile.txt');

while ( my $line = shift @lines) {
next unless ($line =~ m/END OF HEADER/);
last; # here suggest some other logic
}

append_file('writefile.txt', @lines);

最佳答案

next 将继续循环的下一次迭代,有效地跳过该迭代循环中的其余语句(在本例中为 last )。

last 将立即退出循环,这听起来像你想要的。所以你应该能够简单地将条件语句放在 last 上.

此外,我不确定您为什么要将整个文件读入内存以遍历其行?为什么不使用常规 while(<>) ?我建议避免 File::Slurp , 它有一些 long-standing issues .

您没有显示任何具有预期输出的示例输入,并且您的描述不清楚 - 您说“我想复制一些关键字”但在您的代码中您使用 shift ,它从数组的开头删除项目。

是否要删除之前之后包括包括"END OF HEADER"的行?

此代码将仅复制标题:

use warnings;
use strict;

my $infile = 'readfile.txt';
my $outfile = 'writefile.txt';

open my $ifh, '<', $infile or die "$infile: $!";
open my $ofh, '>', $outfile or die "$outfile: $!";
while (<$ifh>) {
last if /END OF HEADER/;
print $ofh $_;
}
close $ifh;
close $ofh;

而如果您想复制 header 后的所有内容,您可以替换 while上面有:

while (<$ifh>) {
last if /END OF HEADER/;
}
while (<$ifh>) {
print $ofh $_;
}

它将循环并且什么也不做直到它看到 END OF HEADER ,然后跳出第一个循环并转到第二个循环,它打印出标题后的行。

关于perl - 使用perl将内容从一个文件复制到另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48719545/

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