diff options
| author | fukachan <fukachan> | 2001-02-20 15:03:55 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2001-02-20 15:03:55 +0000 |
| commit | a26eb812e065e82546a9c93bd9c721101ac59f69 (patch) | |
| tree | f90fb35bbd487e07511c452561387976b619d362 /fml/lib/FML/SequenceFile.pm | |
| parent | 60120edb4f3e83a82874a61b623d6c09e2978803 (diff) | |
| download | fml8-a26eb812e065e82546a9c93bd9c721101ac59f69.tar.gz fml8-a26eb812e065e82546a9c93bd9c721101ac59f69.tar.bz2 fml8-a26eb812e065e82546a9c93bd9c721101ac59f69.zip | |
move FML::SequenceFile and Utils to File::
add File::Errors also to avoid errors
Diffstat (limited to 'fml/lib/FML/SequenceFile.pm')
| -rw-r--r-- | fml/lib/FML/SequenceFile.pm | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/fml/lib/FML/SequenceFile.pm b/fml/lib/FML/SequenceFile.pm deleted file mode 100644 index a68457c1..00000000 --- a/fml/lib/FML/SequenceFile.pm +++ /dev/null @@ -1,140 +0,0 @@ -#-*- perl -*- -# -# Copyright (C) 2001 Ken'ichi Fukamachi -# All rights reserved. This program is free software; you can -# redistribute it and/or modify it under the same terms as Perl itself. -# -# $Id$ -# $FML$ -# - -package FML::SequenceFile; -use strict; -use vars qw(@ISA @EXPORT @EXPORT_OK); -use Carp; -use FML::Errors qw(error_reason error error_reset); - -=head1 NAME - -FML::SequenceFile - maintain the sequence number - -=head1 SYNOPSIS - - use FML::SequenceFile; - my $sfh = new FML::SequenceFile { sequence_file => $seq_file }; - my $id = $sfh->increment_id; - if ($sfh->error) { use Carp; carp( $sfh->error ); } - -If you divide the $id by some modulus, use - - my $sfh = new FML::SequenceFile { - sequence_file => $seq_file, - modulus => $modules, - }; - my $id = $sfh->increment_id; - -For example, if you do new() with modulus 3, - - my $sfh = new FML::SequenceFile { - sequence_file => $seq_file, - modulus => 3, - }; - -$id becomes 0, 1, 2, 0, 1, 2... - -=head1 DESCRIPTION - -=head2 C<new($args)> - -$args->{ sequence_file } is the file holding the current sequence number. - -=head2 C<increment_id([$file])> - -increment the sequence number. - -=cut - -require Exporter; -@ISA = qw(Exporter); - - -sub new -{ - my ($self, $args) = @_; - my ($type) = ref($self) || $self; - my $me = {}; - $me->{ _sequence_file } = $args->{ sequence_file }; - $me->{ _modulus } = $args->{ modulus }; - return bless $me, $type; -} - - -sub increment_id -{ - my ($self, $file) = @_; - my $id = 0; - my $seq_file = $file || $self->{ _sequence_file }; - - unless ($seq_file) { - $self->error_reason("the sequence file is not specified"); - return 0; - }; - - # touch the sequence file if it does not exist. - unless (-f $seq_file) { - use FML::Utils qw(touch); - touch($seq_file); - }; - - use IO::File::Atomic; - my ($rh, $wh) = IO::File::Atomic->rw_open($seq_file); - - # read the current sequence number - if (defined $rh) { - $id = $rh->getline; - $rh->close; - } - else { - $self->error_reason("cannot open the sequence file"); - return 0; - } - - # compute the modulus - if (defined $self->{ _modulus }) { - my $modulus = $self->{ _modulus }; - $id++; - $id = $id % $modulus; - } - # increment $id. The incremented number is the current article ID. - else { - $id++; - } - - # save $id - print $wh $id, "\n"; - $wh->close; - - $id; -} - - -=head1 AUTHOR - -Ken'ichi Fukamachi - -=head1 COPYRIGHT - -Copyright (C) 2001 Ken'ichi Fukamachi - -All rights reserved. This program is free software; you can -redistribute it and/or modify it under the same terms as Perl itself. - -=head1 HISTORY - -FML::SequenceFile appeared in fml5 mailing list driver package. -See C<http://www.fml.org/> for more details. - -=cut - - -1; |
