Re: detecting GEDCOM dates with a year and a month but no day
[email protected] (Stephen Woodbridge) Wed, 25 Mar 2009 22:09:09 -0500
| Newsgroups | perl.gedcom |
|---|---|
| Message-ID | <[email protected]> |
This should work for the formats you show.
if ($date =~
m/^\s*(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)\s+(\d+)\s*$/i) {
print "ERROR: date has month($1) and year($2) but no day: $date\n";
}
-Steve
Philip Durbin wrote:
> I'd like to detect when a date in my GEDCOM file contains a year and a
> month but no day, such as "FEB 1978".
>
> I've written a small test (below) that you can run with "prove
> datebug.t". The answer I'm looking for is the proper $condition for the
> if statement in datebug.pl (also below).
>
> Gedcom::Date says "the Gedcom standard for genealogical data files
> defines a number of date formats" so it would be nice if the solution
> would work not just for the format my dates happen to use (i.e. 24 MAR
> 1964, which is what GRAMPS exported), but for any GEDCOM dates. That
> said, I would (selfishly) be content with a solution that only works for
> dates like mine. :)
>
> Thank you very much for your help!
>
> Phil
>
> [pdurbin@macbook tmp]$ cat datebug.pl
> #!/usr/bin/perl
> use strict;
> use warnings;
> while (my $line = <DATA>) {
> chomp $line;
> my ($name, $date ) = split(/:/, $line);
> # what should the condition be?
> my $condition;
> if ($condition) {
> print "ERROR: date has month and year but no day: $date\n";
> }
> }
> __DATA__
> Person1:FEB 1978
> Person2:1 APR 1917
> Person3:JUL 1973
> Person4:24 MAR 1964
> [pdurbin@macbook tmp]$
> [pdurbin@macbook tmp]$ cat datebug.t
> use strict;
> use warnings;
>
> use Test::More tests => 1;
>
> is(
> `./datebug.pl`,
> "ERROR: date has month and year but no day: FEB 1978
> ERROR: date has month and year but no day: JUL 1973\n",
> 'datebug.pl is ok'
> );
> [pdurbin@macbook tmp]$