use vars '$DATA_POS'; $DATA_POS = tell *DATA unless defined $DATA_POS; # update - swapped args to be in correct order seek *DATA, $DATA_POS, 0; while() { ... }