我是 perl 初学者(但我猜想所有编程语言的逻辑都是相同的,比如 C++ 和 C,就我的情况而言是 perl)。
我想要实现什么?
我有一个文本文件,我读取该文件,其中每一行包含不同的 IP 地址时间,当我找到特定时间时,我会删除该行。
问题是什么 ?
问题是,当我打开一个文件并检查时间(以查看这是否是我要删除此行的特定时间)时,它需要读取该文件(我的意思是“<”操作),但是当我必须在找到正确的时间后删除该特定行时,我需要执行写入操作(我的意思是这个“>”操作)。现在,当我尝试实现这一点时,我使用此代码(这肯定不会起作用,因为文件是在读取模式下打开的,我们无法删除(我的意思是写入它)):
open my $fhi, '<', 'C:\shekhar_Axestrack_Intern\WindowCreation\ListOfIpAdress.txt', or die "Could not open file $!";
while (my $line = <$fhi>)
{
## Doing some operation using $fhi in read mode
if($Time >'33')
{
$fhi->autoflush; #flush the line if time is greater than 33 hours, whereas all other lines which do not folow the condition are still present in file.
}
}
close $fhi;
如何删除文本文件中的特定行(经过一些时间操作之后?)
答案1
您可以使用Tie::File
:
tie @lines,'Tie::File','C:\...';
for $line (@lines){
# Do some operation on $line
# Test if you need to delete the line
push @to_delete, $i++ if $need_to_delete;
}
delete @lines[@to_delete]
请注意,变量@lines
变得神奇:数组的每个元素都是文件中的一行,并且对该元素所做的任何更改都会反映在文件中。没有安全网,所以首先进行备份!!