#!perl
use 5.10.0;
use strict;
use warnings;
my %merged = ();
my $index = 0;
map {
open my $file, '<', $_ or die $!;
map {
$merged{$_->[0]} //= [ qw{null} x 3 ];
$merged{$_->[0]}[$index] = $_->[1];
}
map {
[ m{ \A ( \S+ \s \S+ \s \S+ \s \S+ ) \s ( \S+ ) \z }msx ]
}
map {
chomp; $_
} (<$file>);
close $file;
++$index;
} qw{gravity magnetics bathymetry};
say join(' ', $_, @{$merged{$_}}) for sort keys %merged;
####
ken@Miranda ~/c/_/tmp
$ cat gravity
2010-10-01 00:00:03 lat1 long1 grav1
2010-10-02 00:00:05 lat2 long2 grav2
2010-10-03 00:00:07 lat3 long3 grav3
ken@Miranda ~/c/_/tmp
$ cat magnetics
2010-10-02 00:00:05 lat2 long2 mag1
2010-10-03 00:00:07 lat3 long3 mag2
2010-10-04 00:00:09 lat4 long4 mag3
ken@Miranda ~/c/_/tmp
$ cat bathymetry
2010-10-03 00:00:07 lat3 long3 bath1
2010-10-04 00:00:09 lat4 long4 bath2
2010-10-05 00:00:01 lat3 long3 bath3
####
ken@Miranda ~/c/_/tmp
$ geo_file_join.pl
2010-10-01 00:00:03 lat1 long1 grav1 null null
2010-10-02 00:00:05 lat2 long2 grav2 mag1 null
2010-10-03 00:00:07 lat3 long3 grav3 mag2 bath1
2010-10-04 00:00:09 lat4 long4 null mag3 bath2
2010-10-05 00:00:01 lat3 long3 null null bath3