Gedcom::Record(3pm)
π NAME π
okay so bestie, say hi to Gedcom::Record β a module to manipulate Gedcom records π and yes, it's the one living in the Gedcom::Record(3pm) section of your man pages.
We're on Version 1.22 - 15th November 2019, no cap. β¨
π¦ SYNOPSIS π¦
use Gedcom::Record;
my $record = tag_record("CHIL", 2);
my @records = tag_record("CHIL");
my @recs = $record->record("birth");
my @recs = $record->record("birth", "date");
my $rec = $record->record("birth date");
my $rec = $record->record(["birth", 2], "date");
my @recs = $record->get_record("birth");
my $val = $record->get_value;
my @vals = $record->get_value("date");
my @vals = $record->get_value("birth", "date");
my $val = $record->get_value("birth date");
my $val = $record->get_value(["birth", 2], "date");
my $rec = $record->add("birth date", "1 Jan 2000");
my $rec = $record->set("birth date", "2 Jan 2000");
$self->parse($record, $grammar);
$record->collect_xrefs($callback);
my $xref = $record->resolve_xref($record->{value});
my @famc = $record->resolve $record->get_value("FAMC");
$record->resolve_xrefs($callback);
$record->unresolve_xrefs($callback);
return 0 unless $record->validate_semantics;
$record->normalise_dates($format);
$record->renumber($args);
print $record->summary, "\n";
$record->delete_record($sub_record);
π DESCRIPTION π
A selection of subroutines to handle records in a GEDCOM file. That's the whole vibe. π«Ά
Derived from Gedcom::Item. It's giving generational talent, honestly.
π HASH MEMBERS π
Some of the more important hash members are β peek behind the curtain bestie, we're going in π:
$record->{new_xref}
Used by renumber().
$record->{recursed}
Used by renumber().
π METHODS π
tag_record
my $record = tag_record("CHIL", 2);
my @records = tag_record("CHIL");
Get specific sub-records from the record. This function is identical to Gedcom::Item::get_item(). literally twins β¨
The arguments are the name of the tag, and optionally the count, starting from one.
In scalar context, returns the sub-record, or undef if it doesn't exist. In array context, returns all sub-records matching the specified tag.
record
my @recs = $record->record("birth");
my @recs = $record->record("birth", "date");
my $rec = $record->record("birth date");
my $rec = $record->record(["birth", 2], "date");
my @recs = $record->get_record("birth");
Retrieve a record. π
The get_record() function is identical to the record() function β same energy, different name.
In scalar context, record() returns the specified record, or undef if there is none. In list context, record() returns all the specified records.
Records may be specified by a list of strings. Each string is either a GEDCOM tag or a description. Starting from the first string in the list, specified records are retrieved. Then from those records, records specified by the next string in the list are retrieved. This continues until all strings from the list have been used. It just keeps going, bestie, like a group chat at 2am π±
In list context, all specified records are retrieved. In scalar context, only the first record is retrieved. If a record other than the first is wanted, then instead of passing a string, a reference to an array containing the string and a count may be passed.
Instead of specifying a list of strings, it is possible to specify a single space separated string. This can make the interface nicer. aesthetic upgrade, we love to see it πΈ
get_value
my $val = $record->get_value;
my @vals = $record->get_value("date");
my @vals = $record->get_value("birth", "date");
my $val = $record->get_value("birth date");
my $val = $record->get_value(["birth", 2], "date");
Retrieve a record's value. π
If arguments are specified, record() is first called with those arguments, and the values of those records are returned.
add
my $rec = $record->add("birth date", "1 Jan 2000");
Add a new record. β¨ brand new, fresh out the box β¨
Add a new record ($rec) as a sub-item of $record. Set its value to the last argument given. The first arguments may be specified as for record(). A new record will always be created for the last argument, and for any arguments for which the count is explicitly set to zero.
If the new record does not take a value then do not supply one. This does mean that you cannot use the function with many arguments if the last one is a scalar, but not a value. In this case either specify the last argument as ["arg", 0], or add undef as the last argument.
heads up bestie, that last bit is a whole gotcha β read it twice if you have to π
set
my $rec = $record->set("birth date", "2 Jan 2000");
Set the value of a record.
This is the same as add(), with the exception that a new record is not created for the last argument. no new friends, just an update π
parse
$self->parse($record, $grammar);
Parse a Gedcom record.
Match a Gedcom::Record against a Gedcom::Grammar. Warn of any mismatches, and associate the Gedcom::Grammar with the Gedcom::Record as $record->{grammar}. Do this recursively. π
collect_xrefs
$record->collect_xrefs($callback);
Recursively collect all the xrefs. Called by Gedcom::collect_xrefs. $callback is not used yet. (it's just sitting there, waiting for its moment π)
resolve_xref
my $xref = $record->resolve_xref($value);
See Gedcom::resolve_xrefs(). π
resolve
my @famc = $record->resolve $record->tag_value("FAMC");
For each argument, either return it or, if it an xref, return the referenced record.
resolve_xrefs
$record->resolve_xrefs($callback);
See Gedcom::resolve_xrefs(). π
unresolve_xrefs
$record->unresolve_xrefs($callback);
See Gedcom::unresolve_xrefs(). π
validate_semantics
return 0 unless $record->validate_semantics;
Validate the semantics of the Gedcom::Record. This performs a number of consistency checks, but could do even more. overachiever core, but make it humble π
Returns true iff the Record is valid.
normalise_dates
$record->normalise_dates($format);
Change the format of all dates in the record. ποΈβ¨
See the documentation for Gedcom::normalise_dates.
renumber
$record->renumber($args);
Renumber the record.
See Gedcom::renumber(). π’
child_value
NOTE - This function is deprecated - use tag_value instead.
my $child = $record->child_value("NAME");
child_values
NOTE - This function is deprecated - use tag_value instead.
my @children = $record->child_values("CHIL");
summary
print $record->summary, "\n";
Return a line of text summarising the record. the tl;dr of records, truly iconic π
delete_record
$record->delete_record($sub_record);
Delete the specified sub-record from the record. ποΈ bye bestie, sadly it's time
Access functions
All the GEDCOM tag names can be used as function names. Depending on the context in which they are called, the functions return either an array of the specified sub-items, or the first specified sub-item.
The descriptions of the tags, with spaces replaced by underscores, can also be used as function names. The function names can be of either, or mixed case. Unless you use the tag name, in either case, or the description in lower case, the function will not be pre-declared and you will need to qualify it or use subs.
lowkey important: read that casing rule three times and then once more, because Perl will absolutely humble you otherwise π
and that's the whole page, bestie β we ate and left no crumbs π
This little manual dropped as part of perl v5.36.0, dated 2022-10-16, and it's filed under Gedcom::Record(3pm). Take care of it, it's precious ππ§ββοΈπ¦
π¦ where this page comes from
- ubuntu noble: libgedcom-perl 1.22-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu resolute: libgedcom-perl 1.22-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu stonking: libgedcom-perl 1.22-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms