1
1
openmpi/orte/test/mpi/makedata.pl
2015-06-23 20:59:57 -07:00

47 строки
1.1 KiB
Perl
Исполняемый файл

#!/usr/bin/env perl
# Make a simple data file of a argv[0]-specified size (understand "k",
# "m", and "g" suffixes) of a repeating pattern.
use strict;
my $size_arg = $ARGV[0];
$size_arg =~ m/^(\d+)/;
my $size = $1;
$size_arg =~ m/([mkg])$/i;
my $size_unit = lc($1);
if ($size_unit eq "k") {
$size *= 1024;
} elsif ($size_unit eq "m") {
$size *= 1048576;
} elsif ($size_unit eq "g") {
$size *= 1073741824;
}
print "Generating size $size\n";
my $file = "data-" . lc($size_arg);
unlink($file);
my $line = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+=-;";
my $line_len = length($line);
$line .= $line;
open(FILE, ">$file") || die "Can't open file $file";
my $count = 0;
my $line_count = 0;
while ($count < $size) {
my $offset = $line_count % $line_len;
my $num_to_print =
($size - $count < $line_len) ? $size - $count : $line_len;
if ($num_to_print > 0) {
my $printable = substr($line, $offset, $num_to_print - 1);
print FILE $printable . "\n";
$count += $num_to_print;
}
++$line_count;
}
close(FILE);
exit(0);