यह मेरी पहली पर्ल स्क्रिप्ट है। कभी:क्या पर्ल में यादृच्छिक फ़ाइल उत्पन्न करने का कोई और अधिक प्रभावी तरीका है?
#!/usr/bin/perl
if ($#ARGV < 1) { die("usage: <size_in_bytes> <file_name>\n"); }
open(FILE,">" . $ARGV[0]) or die "Can't open file for writing\n";
# you can control the range of characters here
my $minimum = 32;
my $range = 96;
for ($i=0; $i< $ARGV[1]; $i++) {
print FILE chr(int(rand($range)) + $minimum);
}
close(FILE);
इसका उद्देश्य generate a file in a specified size filled with random characters है।
यह काम करता है लेकिन यह बहुत धीमी है। 10 एमबी यादृच्छिक फ़ाइल लिखने में कुछ सेकंड लगते हैं।
क्या किसी के पास इसे तेजी से/बेहतर बनाने के सुझाव/सुझाव हैं? आम नौसिखिया गलतियों को इंगित करने के लिए भी स्वतंत्र महसूस करें।
मुझे लगता है * perl स्ट्रीम में भेजे गए 4k हिस्सों में सबसे अच्छा काम करता है। धारा बफर आकार को बदलने के लिए संबंधित SO: http://stackoverflow.com/questions/1251062/how-can-i-set-the-file-read-buffer-size-in-perl-to-optimize-it-for -लर्ज-फाइल – Incognito
आप 'my $ rand = int (रैंड ($ रेंज ** 4)) 'और' chr ($ rand% $ range + $ न्यूनतम) 'का उपयोग क्यों करते हैं, केवल' my $ rand = int (रैंड ($ रेंज) 'और' सीआर ($ रैंड + $ न्यूनतम) ' – Alexander
'रैंड ($ रेंज ** 4)' में 4 यादृच्छिक वर्ण – mob