35 lines
		
	
	
		
			716 B
		
	
	
	
		
			Perl
		
	
	
	
	
	
		
		
			
		
	
	
			35 lines
		
	
	
		
			716 B
		
	
	
	
		
			Perl
		
	
	
	
	
	
|  | #!/usr/local/bin/perl | ||
|  | 
 | ||
|  | # get args | ||
|  | if (@ARGV < 3) { | ||
|  | 	print STDERR "Usage: $0 base_name start stop max_test [ratings ...]\n"; | ||
|  | 	exit 1; | ||
|  | } | ||
|  | $basename = shift; | ||
|  | $start = shift; | ||
|  | $stop = shift; | ||
|  | $maxtest = shift; | ||
|  | 
 | ||
|  | # open files | ||
|  | open( TESTFILE, ">$basename.test" ) or die "Cannot open $basename.test for writing\n"; | ||
|  | open( BASEFILE, ">$basename.base" ) or die "Cannot open $basename.base for writing\n"; | ||
|  | 
 | ||
|  | # init variables | ||
|  | $testcnt = 0; | ||
|  | 
 | ||
|  | while (<>) { | ||
|  | 	($user) = split; | ||
|  | 	if (! defined $ratingcnt{$user}) { | ||
|  | 		$ratingcnt{$user} = 0; | ||
|  | 	} | ||
|  | 	++$ratingcnt{$user}; | ||
|  | 	if (($testcnt < $maxtest || $maxtest <= 0) | ||
|  | 	&& $ratingcnt{$user} >= $start && $ratingcnt{$user} <= $stop) { | ||
|  | 		++$testcnt; | ||
|  | 		print TESTFILE; | ||
|  | 	} | ||
|  | 	else { | ||
|  | 		print BASEFILE; | ||
|  | 	} | ||
|  | } |