+ my $eval = $cache->{format_eval}->{$format};
+ if ($eval) {
+ sub fld2str {
+ my ($func,$row,$f,$sf,$i) = @_;
+#print STDERR "## in fld2str\n";
+ my $tmp = $codepage->convert(&$func($row,$f,$sf,$i)) || $codepage->convert(&$func($row,$f,$sf,0)) || '';
+ return "'$tmp'";
+ }
+
+ $eval =~ s/v(\d+)\^(\w*)/fld2str($func,$row,$1,$2,$i)/eg;
+#print STDERR "## eval: $eval\n";
+ if (eval "$eval") {
+ die "eval error: eval{$eval}: $@" if ($@);
+ return ($swish,$display);
+ } else {
+ die "eval error: eval{$eval}: $@" if ($@);
+ return (undef,undef);
+ }
+ }
+
+ if (@fmt) {
+ print STDERR "format left unused: [",join("|",@fmt),"]\n";
+ print STDERR "format: [",join("|",@{$tmp}),"]\n";
+ }
+
+# print STDERR "format: {",$format || '',"} display: {",$display || '',"} swish: {",$swish || '',"}\n";