http://www.perlmonks.org?node_id=1035136


in reply to Re^2: single quotes not allowing in perl
in thread single quotes not allowing in perl

Be careful! You have lost the ~ in your match. And you need to place the - at the beginning of the character class. See this example:

use strict; use warnings; my $title = 'have ++ fun#'; if($title=~qr(^([a-zA-Z0-9 -.()%&:;,"'/]+)$)) { print "Do my work 1\n"; } if($title=~qr(^([-a-zA-Z0-9 .()%&:;,"'/]+)$)) { print "Do my work 2\n"; }

Replies are listed 'Best First'.
Re^4: single quotes not allowing in perl
by AnomalousMonk (Archbishop) on May 24, 2013 at 18:00 UTC

    Update: Looked again, found the lost tilde in the  $title=qr(...) bit of code, not in the regex expression where I was looking. Nevermind...

    You have lost the ~ in your match.

    I don't see a  '~' (tilde) in the original
        if($title=~/^([a-zA-Z0-9 \.\-\(\)\%\&\:\;\,\"\']+)$/)
    match. Can you clarify how it was lost?

Re^4: single quotes not allowing in perl
by vasanthgk91 (Sexton) on May 24, 2013 at 13:44 UTC

    why use hyphen symbol very beginning..really i don't know that's why i ask u

      If the hyphen is in the middle of a character class, it defines a range. /[a-z]/ matches any lower case character. In the same way /[ -.]/ defines the range of ASCII characters between " " and "." and these are:  !"#$%&'()*+,-.. If the hyphen is at the start of the class, it will be taken as a hyphen and not to define a range.

      Hyphen is used to match ranges like A-Z and 0-9. But sometimes you want to really match hyphen. In this case there are some fairly convoluted and difficult to remember rules specifying when hyphen means hyphen. An easy rule of thumb though is that if the hyphen is at the very beginning or very end of the range, it means hyphen.

      package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name

        thank u i understood why we put a hyphen symbol very beginning matching

      You had used a long word "beginning" (instead of, say, "start"), yet you continue to use "u" instead of "you". Oh, find some punctuation signs & use them appropriately while there.