#! perl -slw use strict; use Tie::File; open IN, '<:raw', $ARGV[ 0 ] or die $!; my $data = do{ local $/ = -s( $ARGV[ 0 ] ); }; close IN; open my $fh, '+<', \$data or die $!; tie my @lines, 'Tie::File', $fh, memory => 20_000_000; print for @lines[ 100_000, 200_000, 300_000, 400_000 ]; @lines[ 100_000, 200_000, 300_000, 400_000 ] = ( 'modified' ) x 4; print for @lines[ 100_000, 200_000, 300_000, 400_000 ]; ; ## Approx 60 MB here. 25MB file + 20 MB I configured for Tie::File + overhead. __END__ P:\test>460532 bigfile.txt xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx modified modified modified modified