#! /usr/bin/perl #sample string. $string = "((2 > 1) | ('word' eq 'toy'))"; #next line converts user-specified operators into Perl #logical operators. $string =~ s/([&|]{1})/$1$1/g; print "Initial parsed string = $string\n"; #Look ahead assertion. while ($string =~ /\(((?:[^()])*?)\)/) { my $assert = $1; my $val = (eval $1) ? 1 : 0; print "Case to be evaluated = $1\n"; print "Evaluated value = $val\n"; $assert =~ s/\|\|/\\\|\\\|/g; $string =~ s/\($assert\)/$val/; print "Parsed string = $string\n"; } print "Result: $string\n";