sub line_to_record {
my ($line) = @_;
my @fields = split /$fieldsep/, $line;
my $record = {};
foreach my $fieldname (@fieldnames) {
my $field = shift @fields;
$field = "" unless defined $field;
$field =~ s{$escape([0-9a-fA-F]{2})}{ chr(hex($1)) }ge;
$record->{$fieldname} = $field;
}
return $record;
}
sub record_to_line {
my ($record) = @_;
my @fields = ();
foreach my $fieldname (@fieldnames) {
my $field = $record->{$fieldname};
$field =~ s{([$escape$fieldsep]|\P{IsPrint})}{
sprintf "%s%02x", $escape, ord($1)
}ge;
push(@fields, $field);
}
return join($fieldsep, @fields);
}
|