56 |
my $f = $format; |
my $f = $format; |
57 |
|
|
58 |
my $eval; |
my $eval; |
59 |
$eval = $1 if ($f =~ s/^eval{([^}]+)}//); |
$eval = $1 if ($f =~ s/^eval{([^}]+?)}//); |
60 |
|
|
61 |
if ($f =~ s/^([^\d]+)//) { |
if ($f =~ s/^([^\d]+)//) { |
62 |
if ($f) { # there is more to parse |
if ($f) { # there is more to parse |
163 |
sub fld2str { |
sub fld2str { |
164 |
my ($func,$row,$f,$sf,$i) = @_; |
my ($func,$row,$f,$sf,$i) = @_; |
165 |
#print STDERR "## in fld2str\n"; |
#print STDERR "## in fld2str\n"; |
166 |
my $tmp = $codepage->convert(&$func($row,$f,$sf,$i)) || ''; |
my $tmp = $codepage->convert(&$func($row,$f,$sf,$i)) || $codepage->convert(&$func($row,$f,$sf,0)) || ''; |
167 |
return "'$tmp'"; |
return "'$tmp'"; |
168 |
} |
} |
169 |
|
|
170 |
$eval =~ s/v(\d+)\^(\w*)/fld2str($func,$row,$1,$2,$i)/eg; |
$eval =~ s/v(\d+)\^(\w*)/fld2str($func,$row,$1,$2,$i)/eg; |
171 |
#print STDERR "## eval: $eval\n"; |
#print STDERR "## eval: $eval\n"; |
172 |
if (eval "$eval") { |
if (eval "$eval") { |
173 |
|
die "eval error: eval{$eval}: $@" if ($@); |
174 |
return ($swish,$display); |
return ($swish,$display); |
175 |
} else { |
} else { |
176 |
|
die "eval error: eval{$eval}: $@" if ($@); |
177 |
return (undef,undef); |
return (undef,undef); |
178 |
} |
} |
179 |
} |
} |