#!/usr/bin/perl use warnings; use strict; my @positions; open my $OUT, '+>', '2.out' or die $!; for my $i (1 .. 20) { unshift @positions, tell $OUT; print {$OUT} "line $i\n"; } open my $BACK, '>', '2.back' or die $!; for my $pos (@positions) { seek $OUT, $pos, 0; my $line = <$OUT>; print {$BACK} $line; }