This is an interesting approach. Of course my Perl OOP skills have atrophied, so I have a few questions if you don't mind. > > #!/usr/bin/perl -w > > use strict; > > # call new() with named args found in init() to override defaults > my( $fSpliter ) = Text::FileSplitter->new();
Is Text:: a pre existing class (from CPAN or something) or are we originating this class? If this is our own new class, I should have $PERLIB\text\FileSplitter.pm ? Override defaults like this? my( $fSpliter ) = Text::FileSplitter->new( file=>'split.txt', record_length=>50 ); Thanks Jim > > $fSpliter->split(); > > print( "done!\n" ); ------------------------ > > package Text::FileSplitter; > use strict; > use IO::File; > > sub new { > my($class, %args) = @_; > my($self) = bless( { %args }, $class ); > $self->init(); > return( $self ); > } > > sub init { > my($self) = shift(); my($filehandles) = []; > > $self->{ file } ||= './splitfile.txt'; > $self->{ output_prefix } ||= ( ($self->{ file } =~ > /(\w+)/) and $1 ); > $self->{ file_count } ||= 5; > $self->{ record_length } ||= 10; > > $self->{ fh } = IO::File->new( "< $self->{ file }" ) > or die("open $self->{ file }: $!"); > > foreach ( 1 .. $self->{ file_count } ) { > push( > @{ $filehandles }, > IO::File->new("> $self->{ output_prefix }.$_") > ); > } > $self->{ ofh } = $filehandles; > > } > > sub split { > my($self) = shift(); my($buffer); > my($counter) = 0; > while ( sysread $self->{ fh }, $buffer, $self->{ > record_length } ) { > $self->{ ofh }[ $counter % $self->{ file_count } > ]->print( $buffer ); > $counter++; > } > } > > HTH > > Todd W. > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]