in reply to Moose reading big file line by line

Why not store the filehandle in your object and read one line from it in the nextLine sub?

Where does Moose come into play in your problem?

Replies are listed 'Best First'.
Re^2: Moose reading file line by line
by learning.moose (Novice) on Apr 27, 2015 at 13:01 UTC

    I also was trying to do it this way:

    has 'handler' => ( isa => 'FileHandle', is => 'rw' ); sub openHandler { my $self = shift; open( $self->handler, '<', $self->file ) or croak "Can't open file +"; } sub closeHandler { my $self = shift; close $self->handler; } sub readLine { my $self = shift; return <$self->handler>; }

    but im getting Bareword syntax error

      It would be easier if you told me where Perl reports a syntax error.

      The following is not really valid Perl:

      return <$self->handler>;

      See readline resp. I/O-Operators about how to use a more complex expression as a filehandle. You could also just simplify your code to the following construct:

      sub readLine { my $self = shift; my $fh= $self->handler; return <$fh>; }

      I'm not sure whether your open $self->handler actually doess the right thing, but then, I don't know how Moose proposes you store filehandles and what the 'FileHandle' type is supposed to do. I presume that $self->handler does not return a reference to the actual filehandle, so your open might just be useless because you never store the actual opened filehandle back into the object.

        You are right in everything you have written. So to make it work should I make a reference to $fh and that reference to be $self->handler?