Two notes:

Firstly, $document->find will return undef if no regexes are found, not an
empty arrayref, so you should say

my $regex = $document->find('PPI::Token::Regexp') || [];

or

for my $expr ( @[ $regex || [] ] ) {

or even

print qq(\n$file :\n);

if (my $regex = $document->find('PPI::Token::Regexp')) {
    for my $expr ( @$regex ) {
        print qq(\t),$expr->content,qq(\n);
    }
} else {
    print "\tno matches\n";
}

Whatever makes the most sense to you.

Secondly, PPI does not catch all things that can be considered regexes, for
instance:

#!/usr/bin/perl

use strict;
use warnings;

my $regex = "foo";

print "foo" =~ $regex ? "matched" : "no match", "\n";

This is perfectly valid Perl 5 code, but PPI won't recognize it as
containing a regex.


On Tue, Jun 13, 2017 at 8:49 AM Lars Noodén <lars.noo...@gmail.com> wrote:

> Ok. Thanks, Paul and David.
>
> I think I see how I can benefit from Text::Balanced but I now have my
> start with PPI and can list the expressions.
>
> Regards,
> Lars
>
> #!/usr/bin/perl
>
> use strict;
> use warnings;
> use PPI;
> use Data::Dumper;
>
> my $file = shift or ( die("Need a file name!\n") );
>
> my $document = PPI::Document->new( $file );
>
> my $regex = $document->find('PPI::Token::Regexp');
>
> # print Data::Dumper->Dump($regex),qq(\n);
>
> print qq(\n$file :\n);
>
> for my $expr ( @$regex ) {
>     print qq(\t),$expr->content,qq(\n);
> }
>
> exit( 0 );
>
> --
> To unsubscribe, e-mail: beginners-unsubscr...@perl.org
> For additional commands, e-mail: beginners-h...@perl.org
> http://learn.perl.org/
>
>
>

Reply via email to