Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

What the heck does this mean?

by vonman (Acolyte)
on Mar 13, 2001 at 01:25 UTC ( #63964=perlquestion: print w/replies, xml ) Need Help??

vonman has asked for the wisdom of the Perl Monks concerning the following question:

if( m#^coclli=(.*)# && $coclli eq "" ) { $coclli = $1; }
I have inherited a piece of code that "supposedly" works.

There are no variables or subroutines named m. What hould this code do? I see it as m then a comment for the rest of the line. Any ideas?


Edit 2001-03-12 by tye

Replies are listed 'Best First'.
Re: What the heck does this mean?
by japhy (Canon) on Mar 13, 2001 at 01:28 UTC
    Running it through the deparser, I get:
    if (/^coclli=(.*)/ and $coclli eq '') { $coclli = $1; }
    It's using a regex to assign to $coclli if the variable isn't already assigned.

    The deparser is available in Perl 5.005 and up, as:

    japhy% perl -MO=Deparse program_name

    japhy -- Perl and Regex Hacker
      Basically, in English, this code reduces to:

      If the string $_ starts with "coclli=", and then "some characters", and the variable $coclli is equal to the empty string, set the variable $coclli to the (any-amount-of-characters).
Re: What the heck does this mean?
by myocom (Deacon) on Mar 13, 2001 at 01:33 UTC

    perldoc -f m tells you to look at the perlop manpage. In short, it's the match operator.

Re: What the heck does this mean?
by vonman (Acolyte) on Mar 13, 2001 at 01:29 UTC
    There should be a newline after the eq"")and the $1;. Txs
Re: What the heck does this mean?
by vonman (Acolyte) on Mar 13, 2001 at 01:34 UTC
    I think what is happening is that the original code must not be displaying characters correctly on my machine. So what should I replace m and # with?
      What are you talking about? m// is the pattern match operator, and you can use characters other than / for the delimiter. Thus, the code can be:
      /^coclli=(.*)/ # or m!^coclli=(.*)! # or m<^coclli=(.*)>
      Perl can be as eccentric as the programmers who use it.

      japhy -- Perl and Regex Hacker
      perl allows you to specify any character as the regexp seperator. / is just a suggestion and I guess is most widely used? Either way the perldocs say you can use m## just as easy as m// if, for instance you wanted to match a string that had a lot of /'s in it and didn't want to \/ them all - m#///# would work and is a little easier to read than m/\/\/\//.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://63964]
Approved by root
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2020-10-22 09:30 GMT
Find Nodes?
    Voting Booth?
    My favourite web site is:

    Results (225 votes). Check out past polls.