Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: or operator not working at checking directories

by epoptai (Curate)
on Jun 30, 2002 at 04:27 UTC ( #178307=note: print w/ replies, xml ) Need Help??


in reply to or operator not working at checking directories

It doesn't work because the match after the or is not happening. You need to be more explict about the second match and use and instead:

if ($homeurl !~ m[^http://] and $homeurl !~ m[^https://]) { print "Your home url has to start with http:// or https://"; }
Or you could put the or inside the match (using | which means 'or'):
if ($homeurl !~ m[^http://|https://]) { print "Your home url has to start with http:// or https://"; }
Or you could use a ? after the s to signify that it may or may not exist, the most elegant method in this case:
if ($homeurl !~ m[^https?://]) { &inerror("Your home url has to start with http:// or https://"); }
To find out the permissions on a file or directory check out stat.

--
Check out my Perlmonks Related Scripts like framechat, reputer, and xNN.


Comment on Re: or operator not working at checking directories
Select or Download Code
Re^2: or operator not working at checking directories
by Aristotle (Chancellor) on Jun 30, 2002 at 10:42 UTC
    if ($homeurl !~ m[^http://|https://]) {

    Careful. Your regex tests for http:// at the start of the string, or https:// anywhere in the string. The |-alternative is greedy if not enclosed in brackets. Also, it is better to keep or distinctions like this outside the regex engine.

    In reply to the original question, I would suggest that it's semantically much better to write this as:
    unless ($homeurl =~ m[^http://] or $homeurl =~ m[^https://]) { &inerror("Your home url has to start with http:// or https://"); }
    which to me feels like it more clearly conveys what's meant here.

    Finally, though, I want to suggest, in this specific instance, to use the ? quantifier:

    unless ($homeurl =~ m[^https?://]) { &inerror("Your home url has to start with http:// or https://"); }
    ____________
    Makeshifts last the longest.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://178307]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (6)
As of 2014-08-23 11:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (173 votes), past polls