#!/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);
}
}
}
####
hello
####
jello