14 |
|
|
15 |
=head1 VERSION |
=head1 VERSION |
16 |
|
|
17 |
Version 0.03 |
Version 0.04 |
18 |
|
|
19 |
=cut |
=cut |
20 |
|
|
21 |
our $VERSION = '0.03'; |
our $VERSION = '0.04'; |
22 |
|
|
23 |
=head1 SYNOPSIS |
=head1 SYNOPSIS |
24 |
|
|
47 |
); |
); |
48 |
|
|
49 |
$db->open('/path/to/database'); |
$db->open('/path/to/database'); |
50 |
print "database size: ",$db->size,"\n"; |
print "database size: ",$db->size,"\n"; |
51 |
while (my $rec = $db->fetch) { |
while (my $rec = $db->fetch) { |
52 |
} |
# do something with $rec |
53 |
|
} |
54 |
|
|
55 |
|
|
56 |
|
|
64 |
module => 'WebPAC::Input::MARC', |
module => 'WebPAC::Input::MARC', |
65 |
code_page => 'ISO-8859-2', |
code_page => 'ISO-8859-2', |
66 |
low_mem => 1, |
low_mem => 1, |
67 |
|
recode => 'char pairs', |
68 |
); |
); |
69 |
|
|
70 |
C<module> is low-level file format module. See L<WebPAC::Input::Isis> and |
C<module> is low-level file format module. See L<WebPAC::Input::Isis> and |
185 |
# create Text::Iconv object |
# create Text::Iconv object |
186 |
$self->{iconv} = Text::Iconv->new($code_page,$self->{'code_page'}); |
$self->{iconv} = Text::Iconv->new($code_page,$self->{'code_page'}); |
187 |
|
|
188 |
|
my $filter_ref; |
189 |
|
|
190 |
|
if ($self->{recode}) { |
191 |
|
my @r = split(/\s/, $self->{recode}); |
192 |
|
if ($#r % 2 != 1) { |
193 |
|
$log->logwarn("recode needs even number of elements (some number of valid pairs)"); |
194 |
|
} else { |
195 |
|
my $recode; |
196 |
|
while (@r) { |
197 |
|
my $from = shift @r; |
198 |
|
my $to = shift @r; |
199 |
|
$recode->{$from} = $to; |
200 |
|
} |
201 |
|
|
202 |
|
my $regex = join '|' => keys %{ $recode }; |
203 |
|
|
204 |
|
$log->debug("using recode regex: $regex"); |
205 |
|
|
206 |
|
$filter_ref = sub { |
207 |
|
my $t = shift; |
208 |
|
$t =~ s/($regex)/$recode->{$1}/g; |
209 |
|
return $t; |
210 |
|
}; |
211 |
|
|
212 |
|
} |
213 |
|
|
214 |
|
} |
215 |
|
|
216 |
my ($db, $size) = $self->{open_db}->( $self, |
my ($db, $size) = $self->{open_db}->( $self, |
217 |
path => $arg->{path}, |
path => $arg->{path}, |
218 |
|
filter => $filter_ref, |
219 |
); |
); |
220 |
|
|
221 |
unless ($db) { |
unless ($db) { |