我有一个输入文件,存在这么多的冗余记录,我试图写一个程序来删除冗余的一部分,但它似乎仍然有一些冗余,但我找不到什么地方错了不能摆脱相同的记录
ARGV [0]是与冗余输入文件
ARGV [1]是没有输入文件的冗余输出文件
open(Input,"<./$ARGV[0]");
open(Output,">./$ARGV[1]");
while(eof(Input) !=1)
{
push(@Records,readline(*Input));
}
close Input;
# Solution 2
for($i=0;$i<$#Records;$i++)
{
for($j=$i+1;$j<$#Records;$j++)
{
if($Records[$i] eq $Records[$j])
{
$Records[$j] = undef;
}
}
}
@Records = grep defined,@Records;
=begin
# Solution 1 have some problems
for($i=0;$i<$#Records;$i++)
{
for($j=$i+1;$j<$#Records;$j++)
{
if($Records[$i] eq $Records[$j])
{
splice @Records,$j,1;
$j = $j-1;
}
}
}
=end
=cut
foreach $Each(@Records)
{
print Output $Each;
}
close Output;
感谢
不要忘记关闭文件句柄 – 2013-03-10 13:26:10
词法文件句柄在超出范围时会自动关闭,所以通常不需要明确关闭它们。 – 2013-03-10 16:16:38