#!/usr/bin/perl
#===============================================================================
#  DESCRIPTION:  Примитивный скрипт для попарной синхронизации указанных списком
#                ТЕКСТОВЫХ файлов. Синхронизация производится на основании времени
#                последнего изменения файла.
#
#        USAGE:  Вручную внести в список %files пары файлов, между которыми должна
#                выполняться синхронизация и запустить скрипт.
#
#       AUTHOR:  dimio
#          URL:  http://www.dimio.org
#      VERSION:  0.1
#      CREATED:  2010-07-08
#===============================================================================
require 5.8.8;
use warnings;
use strict;
use encoding 'utf8', STDOUT => 'utf8';
our $VERSION = '0.1';

# Пары файлов для синхронизации указывать в списке ниже:
my %files = (
    '/path/to/file_1_1'          => '/path/to/file_1_2',
    '/path/to/file_2_1'          => '/path/to/file_2_2',
    # и так далее до победного
);


# Процесс пошел...
foreach my $file (keys %files) {


    if ( (stat($file))[9] > (stat($files{$file}))[9] ) { # если первый файл изменён позже второго - обновить второй

        open (FROM, '<', $file) or die "Can't open $file\n";
        my @tmp = <FROM>;
        close (FROM);

        open (TO, '>', $files{$file}) or die "Can't open $files{$file}\n";
        print TO @tmp;
        close (TO);

        print '-> '.$files{$file}.' is updated from '.$file,"\n";
    }

    elsif ( (stat($file))[9] < (stat($files{$file}))[9] ) { # если второй позже первого - обновить первый

        open (FROM, '<', $files{$file}) or die "Can't open $files{$file}\n";
        my @tmp = <FROM>;
        close (FROM);

        open (TO, '>', $file) or die "Can't open $file\n";
        print TO @tmp;
        close (TO);

        print '<- '.$file.' is updated from ',$files{$file},"\n";
    }

    else { print '= updating not required',"\n"; } # иначе обновление не требуется
    # впрочем в обычных условиях в windows время изменения всегда различается на миллисекунды
}


exit 0;