perl可以删除文件中的多行吗?

时间:2012-11-21 15:43:55

标签: perl

我被告知我可以使用perl从我拥有的文本文件中删除行。但是,我对perl非常简短。

我需要匹配我的文本文件中的一个数字,从第二个文件中获取,并从第一个文件中删除该行和后一个2,然后跳到下一个匹配的数字,依此类推。我想要匹配的数字将在一个范围内。这可能吗?或者更容易在实际脚本中包含要匹配的数字,而不是在第二个文件中,例如在 -

__DATA__
23-28
47-55
108-139
etc

那种格式?

非常感谢任何帮助或指示。

非常感谢提前。

*对不起我可能应该从我所做的开始,我尝试过这段代码:“

#!/usr/bin/env perl 

use strict; 
use warnings; 

my $number = <DATA>; 

open( FILE, "<MGE.txt" ); 
my @LINES = <FILE>; 
foreach my $LINE ( @LINES ) { 
    print FILE $LINE unless ( $LINE =~ m/$data/ ); 
} 
close( FILE ); 
}
__DATA__
34163-51525
80765-83026
137322-138041
141474-142274
315945-318143
etc...

但是,我收到了 -

Global symbol $data requires explicit package name.

1 个答案:

答案 0 :(得分:1)

您尝试的一些问题:

  1. FILE仅供阅读,因此您无法print
  2. 在所有行FILE中啜饮之后,文件的末尾将会出现。
  3. 原始代码的解决方案:

    open(FILE, "<", "MGE.txt") or die "open read failed: $!";
    my @LINES = <FILE>;
    # reopen FILE for writing
    open(FILE, ">", "MGE.txt") or die "open write failed: $!"
    for my $LINE (@LINES) {
      print FILE $LINE if ...;
    }
    close(FILE);
    

    另一种标准方法是使用Tie::File模块 - http://perldoc.perl.org/Tie/File.html