Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re: or operator not working at checking directories

by epoptai (Curate)
on Jun 30, 2002 at 04:27 UTC ( [id://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.

Replies are listed 'Best First'.
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
Domain Nodelet?
Node Status?
node history
Node Type: note [id://178307]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (1)
As of 2024-04-25 01:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found