	#!/usr/bin/perl
	#
	# Record delays between accesses
	#
	
	#define constants
	$elapsed_time = 0;	#simulation time
	$_Timestamp=0; $_Secstamp=1 ;$_Elapsed_Time=2; $_Client_Address=3; 
	$_HTTP_code=4; $_Size=5; $_Method=6; $_URL=7; $_User_Ident=8, 
	$_Hierarchy=9; $_Type=10; $_Exp_Date=11; $_Next_Acc=12; 
	$_Cacheable=13;


	$size_all=0; $size_nr=0; 
	$acc_all=0; $acc_nr=0; 

	#process all files in directory with extension ".new"
	foreach $file (<*.new>) {
       	open(TRACES, "+<$file") || die "$file will not open.";
		print "\nOpened: ". $file. "\n";
		seek(TRACES, 0,2); $file_size = tell(TRACES); seek(TRACES, 0,0); 
		
		$start_time = time();
		while(<TRACES>) { # takes data from $file
			print "\rdone: ".(tell(TRACES)/$file_size)." of 1     ";
			#if((tell(TRACES)/$file_size)>0.01){last;}
			@list = split(" ", $_);
			#if($list[$_Cacheable]){
				&process;
			#}
		}
		$end_time = time();
		close(TRACES);
		$elapsed_time += ($end_time-$start_time);
    }
	print " Acessed = ".$acc_nr. "files \n";
	print "\nFinished in ".$elapsed_time. " secs\n";
	&storeaa(\%visited, ">>urls.txt");
	


#############################################
# algorythms
#############################################

##########################
# track accesses         #
##########################
	sub process{
		if(!(defined $visited{$list[$_URL]})) {
			$visited{$list[$_URL]}=$acc_nr;
			$acc_nr++;
		}
	}


############################################
#subroutine for dumping asoc array to file #
############################################

sub storeaa($$){
	my $a=shift(@_), $f=shift(@_), $key;

	open(DMP, "$f") || die "$0: will not open.";
	
		while (($key, $val) = each (%$a) ){
			print DMP $key." ".$val."\n";
			#print DMP $$a{$key}."\n";
		}

	close DMP;
}

sub loadaa($$){
	my $a=shift(@_), $f=shift(@_), $key;

	open(DMP, "<$f") || die "$0: will not open.";
	
		while(<DMP>) { # takes data from $file
			@list = split(" ", $_);
			$$a{$list[0]}=$list[1];
		}

	close DMP;
}
