#!/usr/bin/perl use warnings; use strict; use Fcntl qw/ :seek :flock /; my $file = 'dogy'; open my $FH, '+<', $file or die "Cannot open '$file' $!"; flock $FH, LOCK_EX or die "Cannot flock '$file' $!"; my @newEntries = grep !($_ % 2), <$FH>; seek $FH, 0, SEEK_SET or die "Cannot seek '$file' $!"; truncate $FH, 0 or die "Cannot truncate '$file' $!"; print $FH @newEntries; close $FH;