in reply to Re: String/Numeric Manipulation
in thread String/Numeric Manipulation

Can you explain to me what the translation of m/^\d+$/ ) means? I am totally new to perl and I have read about the m/ to some degree.

Replies are listed 'Best First'.
Re^3: String/Numeric Manipulation
by shenme (Priest) on Oct 07, 2004 at 19:52 UTC
    Okay, but first, the others are correct in having you check for your 'q' quit action first.

    The '^' character says start matching from the very first character in the string. This is called an 'anchor', because you're saying the match starts at a specific place.

    The '\d' means match only number characters. The translation is '[0123456789]' also seen as '[0-9]'. There are many of these shortcuts and it is worth your while to learn them (see perlre doc).

    The '+' means "one or more of the preceding". So we're saying there has to be at least one numeric digit and maybe more (but contiguous - nothing in-between).

    And the '$' is like '^', an anchor, saying the match ends after the last character in the string. (There's a footnote about newline chars, but look that up later).

    So altogether we're saying that the entire string (because of the '^' and '$' anchors) must contain only numeric characters and there must be at least one of those, and nothing else is allowed.

    Other people have mentioned playing with '+' or '-' signs and that's reasonable. It gets into the topic "what do you think a number looks like?" I know there's good discussions in lots of books. I found a bit of one in perlretut under "Building a Regexp". There's probably others in the docs.

    With REs it is only a question of "How much fun can you stand at any one time?" Learn just what you need at the time and keep adding on!