---
name: "Compiler::Lexer"
section: "3pm"
platform: "linux"
package: "libcompiler-lexer-perl"
version: "0.23-3+b4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Compiler::Lexer"
---

# Compiler::Lexer(3pm)

Lexical Analyzer for Perl5

## 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.
