my ($dir, $file, $rnd) = ('/home/test/_html/index/', undef, undef); opendir DIR, $dir or die $!; while (1){ $file = readdir DIR; last unless defined $file; next unless $file =~ /^index\.[^.]+\.html/; $rnd = $file; last if rand(10) > 5; } closedir DIR; die "No files found\n" unless defined $rnd; open IN, "<$rnd" or die $!; print while (); close IN;