NAME

File::Parser::Role A simple role to make life easier when you parse files.

SYNOPSIS

package MyFileParser;

use Moo;
has blob => ( is => "rw" );

sub parse {

  my $self = shift;
  my $fh = $self->fh;

  local $/;

  # just stuff it here, so not really parsing it
  $self->blob( <$fh> );

}

with "File::Parser::Role";

1;

And then in some nearby code:

my $file_obj = MyFileParser->new( "some.file" );

print length $file_obj->blob; # blob now has the file content because of our sub parse

print $file_obj->size;        # size of file as reported by -s

DESCRIPTION

A simple role that provides the tedious necessities when parsing files:

  • make Moo constructor work with filename as one single argument

  • if its a filename, handle it properly if it doesnt exist

  • provide a read-only file handle to the resource

  • run a required sub parse {}

  • fetch its size (its a nice thing to have)

  • accept file handles and other weirdness such as Path::Tiny, IO::All, IO::File, Mojo::Path.

  • accept references to content

All that is left is for you is the fun bit: write the code that does the parsing

INSTALLATION

To install this module, run the following commands:

perl Makefile.PL
make
make test
make install

Alternatively, to install with Module::Build, you can use the following commands:

perl Build.PL
./Build
./Build test
./Build install

COPYRIGHT AND LICENCE

Copyright (C) 2014, Torbjørn Lindahl

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.