http://qs321.pair.com?node_id=505186


in reply to Re: Passing regular expressions as arguments to subroutines
in thread Passing regular expressions as arguments to subroutines

The only reason the subroutine must only accept a regex is because that is the requirement imposed by the problem. Without such restriction, the subroutine could also accept a string (in which case, one easy way to validate would likely involve an eval() ).

The code, $string =~ $re ;, will work in both cases:

  1. when $re is of type Regexp, as in $re=qr/\w/i,
  2. when $re is just a scalar for a string, as in
    • $re = '(?i-xsm:\w)', or
    • $re = '\w';
  • Comment on Re^2: Passing regular expressions as arguments to subroutines