#!/usr/bin/env perl my $k = shift @ARGV; srand; while (<>) { $. <= $k and do { push @lines, $_; next; }; ($a=rand($.)) < $k and ($lines[$a] = $_); } print @lines;