2012-11-21 23 views
0

我被告知,我可以使用Perl從文本文件我已經刪除線。但是,我對perl有很短暫的經驗。可以PERL刪除一個文件多行?

我需要在我的文本文件,從第二個文件得到匹配的數字,並刪除該行和之後的下一個2從第一個文件,然後跳到下一個匹配的數量等等。我試圖匹配的數字將落入一個範圍內。這可能嗎?或者更容易包含數字來匹配,而不是在第二個文件中,在實際的腳本中,例如 -

__DATA__ 
23-28 
47-55 
108-139 
etc 

sort of format?

任何幫助或方向將不勝感激。

非常感謝提前。

*對不起,我也許應該與我所做的事情開始,我已經試過這樣的代碼:」

#!/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. 
+0

該錯誤意味着你還沒有宣佈'$ data'。你的意思是'我的數據= ;'? – RobEarl

回答

1

你嘗試一些問題:

  1. FILE只開放閱讀,所以你將無法print
  2. 啜中的所有行FILE之後會在文件的結尾。

沿着原來的代碼:A液

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

+0

謝謝你的幫助! – user1751893