我被告知我可以使用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.
答案 0 :(得分:1)
您尝试的一些问题:
FILE
仅供阅读,因此您无法print
。FILE
中啜饮之后,文件的末尾将会出现。原始代码的解决方案:
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