#!/usr/bin/env perl
use strict;
use warnings;
use autodie;
my %wanted_records = map { $_ => 1 } @ARGV;
my $filename = 'pm_1203774_transient_data';
check_temporary_file($filename);
create_temporary_file($filename);
check_temporary_file($filename);
process_temporary_file($filename, \%wanted_records);
check_temporary_file($filename);
delete_temporary_file($filename);
check_temporary_file($filename);
sub create_temporary_file {
my ($file_to_create) = @_;
open my $out_fh, '>', $file_to_create;
print $out_fh "$_\n" for 'A' .. 'Z';
return;
}
sub process_temporary_file {
my ($file_to_process, $wanted_records_ref) = @_;
my $total_records = 0;
{
open my $in_fh, '<', $file_to_process;
while (<$in_fh>) {
next unless delete $wanted_records_ref->{$.};
print "Record $.: $_";
}
$total_records = $.;
}
print "No. of records: $total_records\n";
my @problem_records = sort keys %$wanted_records_ref;
if (@problem_records) {
warn "Problem records: @problem_records\n";
}
return;
}
sub delete_temporary_file {
my ($file_to_delete) = @_;
unlink $file_to_delete;
return;
}
sub check_temporary_file {
my ($file_to_check) = @_;
if (-e $file_to_check) {
print "'$file_to_check' exists.\n";
}
else {
print "'$file_to_check' not found.\n";
}
return;
}
####
$ pm_1203774_file_io_basics.pl
'pm_1203774_transient_data' not found.
'pm_1203774_transient_data' exists.
No. of records: 26
'pm_1203774_transient_data' exists.
'pm_1203774_transient_data' not found.
####
$ pm_1203774_file_io_basics.pl 1 2 3
'pm_1203774_transient_data' not found.
'pm_1203774_transient_data' exists.
Record 1: A
Record 2: B
Record 3: C
No. of records: 26
'pm_1203774_transient_data' exists.
'pm_1203774_transient_data' not found.
####
$ pm_1203774_file_io_basics.pl 26 24 25
'pm_1203774_transient_data' not found.
'pm_1203774_transient_data' exists.
Record 24: X
Record 25: Y
Record 26: Z
No. of records: 26
'pm_1203774_transient_data' exists.
'pm_1203774_transient_data' not found.
####
$ pm_1203774_file_io_basics.pl A B C 26 1 27 0 2 garbage
'pm_1203774_transient_data' not found.
'pm_1203774_transient_data' exists.
Record 1: A
Record 2: B
Record 26: Z
No. of records: 26
Problem records: 0 27 A B C garbage
'pm_1203774_transient_data' exists.
'pm_1203774_transient_data' not found.
####
#!/usr/bin/env perl
use strict;
use warnings;
use autodie;
my $filename = 'pm_1203774_sample.ged';
{
my $start_char = '0';
local $/ = "\n$start_char";
open my $fh, '<', $filename;
while (<$fh>) {
chomp;
$_ = $start_char . $_ unless $. == 1;
$_ .= "\n" unless eof;
print "Record #$.\n";
print;
}
}
####
Record #1
0 HEAD
1 SOUR PAF
2 NAME Personal Ancestral File
2 VERS 5.0
1 DATE 30 NOV 2000
1 GEDC
2 VERS 5.5
2 FORM LINEAGE-LINKED
1 CHAR ANSEL
1 SUBM @U1@
Record #2
0 @I1@ INDI
1 NAME John /Smith/
1 SEX M
1 FAMS @F1@
Record #3
0 @I2@ INDI
1 NAME Elizabeth /Stansfield/
1 SEX F
1 FAMS @F1@
Record #4
0 @I3@ INDI
1 NAME James /Smith/
1 SEX M
1 FAMC @F1@
Record #5
0 @F1@ FAM
1 HUSB @I1@
1 WIFE @I2@
1 MARR
1 CHIL @I3@
Record #6
0 @U1@ SUBM
1 NAME Submitter
Record #7
0 TRLR