This is a very quick way way to check if a regexp will work the way one wants. It uses Term::Readline::Gnu so you get a command history (as in bash), simplifying repetative experiments. If anyone can find a string/regexp which doesn't work properly please comment. I imagine it will best serve beginners like myself in understanding things like, eg. that "7463" contains "\w", or that anything could contain "X*".

a version of ReadLine regexp quicktest using substitution (s/) is regexp s/mode quicktest
#!/usr/bin/perl use warnings; use strict; use Term::ReadLine; # for correction and command history you must have # Term::ReadLine::Gnu (from CPAN) installed my $term = new Term::ReadLine 'regular expression test'; my $pr1 = "string: "; my $pr2 ="regexp: "; my $OUT = $term->OUT || *STDOUT; while (1) { my $st=$term->readline($pr1); my $rg=$term->readline($pr2); if ($st =~ /$rg/) {print $OUT "$st contains $rg\n"} else {print "$st does not contain $rg\n"} }

Replies are listed 'Best First'.
Re: ReadLine regexp quicktest
by Fletch (Bishop) on Mar 12, 2008 at 16:02 UTC

    One can do something similar with perl -de 0; just set $_ to your sample data and then try x /foo/ until you get what you want (which has the added benefit of showing what captures captured as well).

    The cake is a lie.
    The cake is a lie.
    The cake is a lie.