in reply to matching strings...
I usually solve this with a subroutine. I'll provide a few - one for regex matching and two for plain 'contains' or 'equals' matching.
The whole idea here is I'm just sticking the operator into a subroutine and calling each value in turn until either the list is exhausted or something matched successfully. I understand this somewhat of the idea behind the junction operators in perl6. Anyhow, check out List::Util for more thoughts along these lines.
sub qrany { $_ =~ $_[0] && return 1 for @_[1 .. $#_]; return } sub cany { index($_[0],$_) != -1 && return 1 for @_[1 .. $#_]; return + } sub eqany { $_ eq $_[0] && return 1 for @_[1 .. $#_]; return } # Contains tests if (cany( $string, qw[this or_this or_that]) {.... or # Equality tests if (eqany( $string, qw[this or_this or_that]) {.... or # Regex tests if (qrany( $string, qr/one regex/, qr/another regex/, qr/yet another regex/ )) { ....
Updated Added eqany and some comments on the usage of each
UpdatedFixed the words "three and two". Also added the second paragraph
Seeking Green geeks in Minnesota
|
|---|