use Fcntl qw( :flock ); { my $ini; open $ini, '+<', "$path/$fname" or die $!; flock $ini, LOCK_EX; my @lines = <$ini>; seek $ini, 0, 0; print $ini edit(@lines) or die $!; close $ini or die $!; }