Get the length of the file, divide that by how many times you want to split it, then read it into a buffer and write it to a file :)
use strict;
use warnings;
open my $fh, '<', 'filename.dat';
binmode($fh);
my $len = -s $fh;
my $split_length = $length / 5; #would split 10gb into 2gb chunks
my $split_fh = $fh . 'split'; #creates 'filename.split'
my $num = '1';
for ( 1 .. 5 ) {
read $fh, $buf, $split_length;
open my $out_file, '>', $split_fh . $num; #vreates '$filename.spli
+t000, 001, 002 ect
binmode($out_file);
print $out_file, $buf;
close($out_file);
$num++;
}
close($fh);
I am sure there are other ways to do it. It is completely untested code.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|