more useful options PerlMonks

### Re: Matching numeric value between two digits

by toolic (Bishop)
 on Feb 04, 2013 at 21:37 UTC ( #1017012=note: print w/replies, xml ) Need Help??

in reply to Matching numeric value between two digits

How's this?
```use warnings;
use strict;

for (qw(1 2 3 4 20.5 97 -5)) {
if ((\$_ >= 1) and (\$_ <= 75) and (!/\./)) {
print "\$_ yes\n";
}
else {
print "\$_ no\n";
}
}

__END__

1 yes
2 yes
3 yes
4 yes
20.5 no
97 no
-5 no
[download]```

Replies are listed 'Best First'.
Re^2: Matching numeric value between two digits
by shadowfox (Sexton) on Feb 04, 2013 at 22:44 UTC
The code works, just not in my context, which is much the same as mine, it seems to be something with pulling the value from between the keywords and putting it in \$1 but that's what I need in this case. Toying a bit more I ended up with this, which works for my need even if a bit clumsy, can anyone shed light on why it needs to be set in a new variable? The same digit check used in the primary check on \$1 just won't work for me but this does.
```if (\$_ =~ /\something(.*)somethingelse/i){
if ((\$1 >= 1) and (\$1 <= 75)) {
\$a = \$1;
if (\$a =~ /^\d+\$/){ ... }
}
}
[download]```

You weren't doing the check on \$1 in your original code.

```if(\$1 => 1 and \$1 <= 75 and /\d{1}-\d{2}/) { ... }
[download]```

The /\d{1}-\d{2}/ is done on \$_, not \$1.

BTW you could just do the whole-number check right away:

```if (\$_ =~ /\something(\d*)somethingelse/i){
if(\$1 => 1 and \$1 <= 75) { ... }
}
[download]```

Log In?
 Username: Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1017012]
help
Chatterbox?
 [Lady_Aleena]: Why does grep(/.*\$in.*/, @my_modules) work but grep { \$_ =~ /.*\$in.*/; \$_ } @my_modules not work? What did I do wrong in the second? [tobyink]: Why are you returning \$_ n your grep block? You should return a boolean. [tobyink]: *in your grep block [tobyink]: You can use grep { \$_ =~ /.*\$in.*/; } @my_modules but why not stick to grep(/.*\$in.*/, @my_modules)? (The latter is faster.) [shmem]: Lady_Aleena, in the first example grep evaluates the result from grep and if true, returns \$_. In the second, it always returns \$_ [shmem]: ..the result from the pattern match [Lady_Aleena]: tobyink, I did after I failed to get the BLOCK to work. I can't seem to get my brain around grep BLOCK, though I'm okay with grep EXPR. [shmem]: so in the second example grep returns all true elements of the list passed

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (8)
As of 2017-05-27 07:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
My favorite model of computation is ...

Results (192 votes). Check out past polls.