[![Build Status](https://travis-ci.org/goccy/p5-Compiler-Lexer.svg?branch=master)](https://travis-ci.org/goccy/p5-Compiler-Lexer) [![Coverage Status](https://img.shields.io/coveralls/goccy/p5-Compiler-Lexer/master.svg)](https://coveralls.io/r/goccy/p5-Compiler-Lexer?branch=master)
# NAME

Compiler::Lexer - Lexical Analyzer for Perl5

# SYNOPSIS

    use Compiler::Lexer;
    use Data::Dumper;

    my $filename = $ARGV[0];
    open my $fh, '<', $filename or die "Cannot open $filename: $!";
    my $script = do { local $/; <$fh> };

    my $lexer = Compiler::Lexer->new($filename);
    my $tokens = $lexer->tokenize($script);
    print Dumper $tokens;

    my $modules = $lexer->get_used_modules($script);
    print Dumper $modules;

# METHODS

- my $lexer = Compiler::Lexer->new($options);

    create new instance.
    You can create object from $options in hash reference.

    **options list**

    - filename
    - verbose : includes token of Pod, Comment and WhiteSpace

- $lexer->tokenize($script);

    get token objects includes parameter of 'name' or 'type' or 'line' and so on.
    This method requires perl source code in string.

- $lexer->set\_library\_path(\['path1', 'path2' ...\])

    set libraries path for reading recursively. Default paths are @INC.

- $lexer->recursive\_tokenize($script)

    get hash reference like { 'module\_nameA' => \[\], 'module\_nameB' => \[\] ... }.
    This method requires per source code in string.

- $lexer->get\_used\_modules($script);

    get names of used module.
    This method requires perl source code in string.

# AUTHOR

Masaaki Goshima (goccy) <goccy(at)cpan.org>

# CONTRIBUTORS

tokuhirom: Tokuhiro Matsuno

# LICENSE AND COPYRIGHT

Copyright (c) 2013, Masaaki Goshima (goccy). All rights reserved.

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