... this is taking over 4 hours....
You're doing something wrong :).
The following shows Perl processing a 32 GB file in-place, finding and replacing 30% of it's contents in under 25 minutes; on a single cpu 512 MB ram machine. (the process only uses 3 MB of ram).
#! perl -slw
use strict;
our $BUFSIZE ||= 2**20;
open my $fh, '+< :raw', $ARGV[ 0 ] or die $!;
while( sysread $fh, $_, $BUFSIZE ) {
tr[123][123];
sysseek $fh, -length(), 1; ## Updated per Dave_the_m's correction
+below++
syswrite $fh, $_;
}
close $fh;
__DATA__
[ 8:31:52.64] P:\test>439181 data\integers.dat
[ 8:54:43.92] P:\test>dir data\integers.dat
Volume in drive P has no label.
Volume Serial Number is BCCA-B4CC
Directory of P:\test\data
14/03/2005 08:54 34,359,738,368 integers.dat
1 File(s) 34,359,738,368 bytes
Examine what is said, not who speaks.
Silence betokens consent.
Love the truth but pardon error.
Lingua non convalesco, consenesco et abolesco.
-
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.