The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/bin/env perl

use strict;
use warnings;

use File::Slurper 'read_lines';

use Genealogy::Gedcom::Date;

# ------------------------------------------------

sub process
{
	my($parser, $file_name) = @_;

	print "Processing $file_name. \n";

	my(%count) = (dates => 0, errors => 0);
	my($lines) = [map{s/^\s+//; s/\s+$//; $_} read_lines($file_name)];

	for my $i (0 .. $#$lines)
	{
		if ($$lines[$i] =~ /^\d+\s+DATE\s+(.+)$/)
		{
			$count{dates}++;

			$parser -> parse(date => $1);

			if ($parser -> error)
			{
				$count{errors}++;

				print "Error at line @{[$i + 1]}: ", $parser -> error;
			}
		}
	}

	print "Lines  in file: @{[$#$lines + 1]}. Dates: $count{dates}. Errors: $count{errors}. \n";

} # End of process.

# ------------------------------------------------

my($parser) = Genealogy::Gedcom::Date -> new;

process($parser, 'data/royal.ged');
process($parser, 'data/sample.1.ged');
process($parser, 'data/sample.2.ged');
process($parser, 'data/sample.3.ged');
process($parser, 'data/sample.4.ged');
process($parser, 'data/sample.5.ged');
process($parser, 'data/sample.6.ged');
process($parser, 'data/sample.7.ged');