+sub do_sql {
+ local $_ = shift;
+ # escape an odd number of \ that doesn't protect a regexp/wildcard special char
+ s/(?<!\\)((?:\\\\)*\\(?:[^\W_]|\s|$))/\\$1/g;
+ # substitute _ preceded by an even number of \
+ my $s = capture_single;
+ s/(?<!\\)((?:\\\\)*)_/$1$s/g;
+ # substitute * preceded by an even number of \
+ $s = capture_any;
+ s/(?<!\\)((?:\\\\)*)%+/$1$s/g;
+ return $_;
+}
+