#!/usr/local/bin/perl # FILE .../CPAN/hp200lx-db/DB/tools.pm # # written: 1999-02-21 # latest update: 2001-01-01 18:11:21 # $Id: tools.pm,v 1.3 2001/01/01 20:31:05 gonter Exp $ # package HP200LX::DB::tools; use strict; use vars qw($VERSION @ISA @EXPORT); use Exporter; $VERSION= '0.09'; @ISA= qw(Exporter); @EXPORT= qw( print_list print_content_line ); # ---------------------------------------------------------------------------- # possibly only for ADB files! sub print_list { local *FO= shift; my $rec= shift; my $lang= shift; my $supress_null= shift; my $folding= shift; my ($field, $val); foreach $field (@_) { $val= $lang->{$field}; # print "field='$field' val='$val'\n"; next unless (exists ($rec->{$val}) && ($val= $rec->{$val}) ne ''); next if ($supress_null && $val == 0); &print_content_line (*FO, $field, $val, $folding, 0); } } # ---------------------------------------------------------------------------- sub print_content_line { local *FO= shift; my $field= shift; my $val= shift; my $folding= shift; my $multi= shift; # true => may contain multiple values my ($val1, @lines); # multi line encoding, folding $val=~ s/\r//g; $val=~ s/\n+$//; # remove any trainling new line at the end if ($folding eq 'none') { print FO $field, ':', $val, "\n"; } elsif ($folding eq 'simple') { $val=~ s/\n/\n /g; # this may be required, unsure ... print FO $field, ':', $val, "\n"; } elsif ($folding eq 'rfc') { $val=~ s/([;\\])/\\$1/g; # basic escaping rules $val=~ s/([,])/\\$1/g unless ($multi); # escaping $val=~ s/\n/\\n/g; # backslash encoding $val= $field.':'.$val; while (length ($val) > 75) { $val1= substr ($val, 0, 75); $val= substr ($val, 75); print FO $val1, "\n "; } print FO $val, "\n"; } } # ---------------------------------------------------------------------------- 1;