in reply to Re: Re: a Couple of questions!
in thread a Couple of questions!
If you want to understand the code you have been given, please try to do a little research on your own. A good perldoc page to read is perlre, this contains every answer to all of your regex questions.
What is hard to understand, however, is this:
so let's break it down. Hopefully, you realize that $data =~ m/and/ is a boolean test. It just asks "does $data contain the word 'and'?". If it does, then the answer to the question is true. If it does not, then the answer to the question is false. However, we don't want to know if 'and' appears or not, we want to count how many times it does appear.$count = () = $data =~ m/and/g;
Hopefully you also know about the 'g' modifier. This allows us to match the pattern more than once. Of course, in our simple version above, 'g' is not needed because we only ask if 'and' appears or not - the number of times is irrelevant.
This finally brings us to "scalar context" versus "list context" (see perldata). As you found out in your original question, this does not work:Because we ask the question in "scalar context", we get back ... true (assuming $data does contain 'and'). In order to actually count the occurances, we have to explicitly tell Perl that we want "list context". This is why we have the bare parens (an empty list) in between $count and $data. If you still don't understand, don't worry -- this took me a few months to understand. :)$count = $data =~ m/and/g;
The rest of your questions are all addressed in perlre. I would answer them now, but since you didn't use code tags ... i will instead instruct you to go do some reading. And next time, please for the love of God use code tags man.
Oh, and as for Python versus Perl ... what do you think we are going to say? This is a Perl site! :Pjeffa
L-LL-L--L-LL-L--L-LL-L-- -R--R-RR-R--R-RR-R--R-RR B--B--B--B--B--B--B--B-- H---H---H---H---H---H--- (the triplet paradiddle with high-hat)