#!/usr/bin/perl use strict; use warnings; use File::Copy; use File::Inplace; use File::Spec; use File::Flock; my $dir = '/root/Desktop/in_place'; my $data_dir = sub { File::Spec->catfile($dir, shift); }; my $abc_file = "/root/Desktop/in_place/abc.txt"; my $adc_file = "/root/Desktop/in_place/adc.txt"; lock($abc_file, 'shared', 'nonblocking'); lock($adc_file, 'shared', 'nonblocking'); my $edit = new File::Inplace(file => $data_dir->("abc.txt"), suffix => ".log"); quick_change($edit, hello => 'jello'); $edit->commit; my $lock = File::Flock->new($edit); lock($lock, 'abc.txt.log'); lock_rename($lock, 'abc.txt.log'); unlock('abc.txt.log'); sub quick_change { my $edit = shift; my $from = shift; my $to = shift; while ($edit->has_lines) { my $line = $edit->next_line; if ($line eq $from) { $edit->replace_line($to); } } }