#!/usr/bin/perl # # sample_random_lines_from_file.pl use 5.10.1; use strict; use warnings; use autodie; my @samples; my $FName = shift // die "missing: "; my $num = shift // die "missing: "; open my $FH, '<', $FName; while (<$FH>) { if ($num/$. > rand) { my $i = @samples; if ($i > $num) { $i = rand @samples; } #print "slot $i, size=" . scalar(@samples) . ", line $.\n"; $samples[$i]=[ $., $_ ]; } } print "random samples:\n"; print $$_[1] for sort { $$a[0] <=> $$b[0] } @samples;