Regex – How to check if a regex pattern is valid in Perl

perlregex

Firstly, I was wondering if there was some kind of built in function that would check to see if a regex pattern was valid or not. I don't want to check to see if the expression works – I simply want to check it to make sure that the syntax of the pattern is valid – if that's possible.

If there is no built in function to do so, how do I do it on my own? Do I even need to?

Is there a directory of built in functions/modules that I can search so I can avoid more questions like this? Thank you.

EDIT: I should mention that I plan on generating these patterns on the fly based on user input – which is why I'd like to validate them to make sure they will actually run.

Best Solution

I am no Perl expert, but maybe this can help:

#!/usr/bin/perl

my $pattern = "["; # <-insert your pattern here
my $regex = eval { qr/$pattern/ };
die "invalid regex: $@" if $@;

which returns this:

invalid regex: Unmatched [ in regex; marked by <-- HERE in m/[ <-- HERE / at test.pl line 4.

For your second question you could always check out the huge body of work at CPAN.