adiuva has asked for the wisdom of the Perl Monks concerning the following question:
So the sub superfast() is just writing the character "Z" into the file and this is fast like hell. I could fill my SSD within seconds completely.use strict; use IO::Handle; if ($#ARGV < 1) { die("usage: <size_in_bytes> <file_name>\n"); } open(my $gen_file_h,">" . $ARGV[0]) or die "Can't open file for writin +g\n"; $gen_file_h->autoflush(1); superfast(); close($gen_file_h); die(); sub superfast { #each time though the loop should be 1 meg for (1 .. $ARGV[1]) { #print 1 meg of Zs print {$gen_file_h} "Z" x (1024*1024) } } sub generateRandomFile { my $final_size = $ARGV[1]; for (my $mbytes = 0; $mbytes < $final_size; $mbytes ++) { my $string=""; my @chars = split(" ","a b c d e f g h i j k l m n o p q r + s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z +- _ ! & ? = 0 1 2 3 4 5 6 7 8 9"); for (1..1048576) { my $rand = int(rand(68)); $string .= $chars[$rand]; } print $gen_file_h $string; } }
BTW: The files don't need "secure" randomness, I just need files with a specific size and I'm using ActiveState Perl 5.6.1 635 (and I'm bound to this version) on Windows 7
Thanks in advance,
|
|---|