我有一個輸入文件,存在這麼多的冗餘記錄,我試圖寫一個程序來刪除冗餘的一部分,但它似乎仍然有一些冗餘,但我找不到什麼地方錯了不能擺脫相同的記錄
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