#!/usr/bin/perl -w # merge.pl - Don Yang (uguu.org) # # Usage: # # # Read input lines from base.txt, and replace any whitespaces in # base.txt with characters from overlay.txt. # # 2019-02-24 use strict; die "$0 \n" unless $#ARGV == 1; my ($base, $overlay) = @ARGV; open my $base_file, "<$base" or die $!; open my $overlay_file, "<$overlay" or die $!; while( my $base_line = <$base_file> ) { # Load input lines chomp $base_line; my $overlay_line = <$overlay_file>; if( defined($overlay_line) ) { chomp $overlay_line; } else { $overlay_line = ""; } # Copy non-whitespace characters from base, and all other # characters from overlay. my $output = ""; my $i = 0; for(; $i < length($base_line); $i++) { if( substr($base_line, $i, 1) eq " " && $i < length($overlay_line) ) { $output .= substr($overlay_line, $i, 1); } else { $output .= substr($base_line, $i, 1); } } if( length($overlay_line) > length($base_line) ) { $output .= substr($overlay_line, length($base_line)); } print $output, "\n"; } close $base_file; close $overlay_file;