【问题标题】:Perl multiple files read replacing string, write to multiple filesPerl多个文件读取替换字符串,写入多个文件
【发布时间】:2016-04-26 23:31:52
【问题描述】:

我有这个代码工作,但这仅适用于一个具有特定名称的文件,我怎样才能让它在当前文件夹中执行所有 .vb 文件并在后面输出文件名加 _1

#!/usr/bin/perl
use strict;
use warnings;

open my $fhIn,  '<', 'file.vb'          or die $!;
open my $fhOut, '>', 'file_1.vb'        or die $!;

while (<$fhIn>) {
    print $fhOut "'01/20/2016 Added \ngpFrmPosition = Me.Location\n" if /MessageBox/ and !/'/;

    print $fhOut $_;
}

    enter code here

close $fhOut;
close $fhIn;

【问题讨论】:

  • enter code here -- 触感很好。 readdir 怎么样? (看起来您并没有在自己的研究和/或解决这个问题上投入太多精力。)
  • 目前尚不清楚您在哪个部分苦苦挣扎,但this 将帮助您完成 97% 的工作。
  • @Borodin 啊,这很有道理。我显然认为 OP 只是让我们知道我们可以将他的完整工作代码存放在哪里。

标签: perl


【解决方案1】:

我可能会这样处理它。 (假设脚本与 .vb 文件在同一目录中运行)。

#!/usr/bin/perl
use strict;
use warnings;

# script running in same directory as the .vb files

for my $file (glob "*.vb") {

    my $outfile = $file =~ s/(?=\.vb$)/_1/r;
    print "$file $outfile\n"; # DEBUG 

    # open input and output files

    # do the while loop
}

循环中的打印语句用于调试目的 - 查看您是否正确创建了新文件名。当您对获得所需文件感到满意时,可以将其删除或注释掉。

更新:将 glob 放在 for 循环中,而不是将其读取到数组中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-07
    • 2021-10-21
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    相关资源
    最近更新 更多