#!/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