#!perl use lib qw( ./lib ); use strict; use warnings; binmode STDOUT; use Text::Diff3::Factory; my $f = Text::Diff3::Factory->new; my $p = $f->create_diff3; my $help_message = < ]; close F; my $text2 = [ map{chomp;$_} ]; close F; my $text1 = [ map{chomp;$_} ]; close F; close F0; close F2; close F1; $text0 = $f->create_text( $text0 ); $text2 = $f->create_text( $text2 ); $text1 = $f->create_text( $text1 ); my $i2 = $text2->first_index; my $d = $p->diff3( $text0, $text2, $text1 )->each( sub { my( $r ) = @_; print $text2->as_string_at( $_ ) for $i2 .. $r->lo2 - 1; if ( $opt_V ) { print "<<<<<<< $ARGV[0] : ", $r->as_string, "\n"; print $text0->as_string_at( $_ ) for $r->range0; print "||||||| $ARGV[1]\n"; print $text2->as_string_at( $_ ) for $r->range2; print "=======\n"; print $text1->as_string_at( $_ ) for $r->range1; print ">>>>>>> $ARGV[2]\n"; } elsif ( $r->type eq 'A' ) { print "<<<<<<< $ARGV[0]\n"; print $text0->as_string_at( $_ ) for $r->range0; print "||||||| $ARGV[1]\n"; print $text2->as_string_at( $_ ) for $r->range2; print "=======\n"; print $text1->as_string_at( $_ ) for $r->range1; print ">>>>>>> $ARGV[2]\n"; } elsif ( $r->type eq '0' ) { print $text0->as_string_at( $_ ) for $r->range0; } else { print $text1->as_string_at( $_ ) for $r->range1; } $i2 = $r->hi2 + 1; } ); print $text2->as_string_at( $_ ) for $i2 .. $text2->last_index;