Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

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?

Thanks

Edit 2001-03-12 by tye

Comment on What the heck does this mean?
Download Code
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 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 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: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/\/\/\//.
      Adam

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (15)
As of 2014-08-27 09:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (232 votes), past polls