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

Re^3: Array storage issue

by AnomalousMonk (Canon)
on Apr 06, 2014 at 22:25 UTC ( #1081351=note: print w/replies, xml ) Need Help??


in reply to Re^2: Array storage issue
in thread Array storage issue

The unwisdom of your beguilement with package globals may be demonstrated by the following code. Can you explain the difference between the outputs of the two loops?

c:\@Work\Perl\monks>perl -wMstrict -e "for ($loop::i = 0; $loop::i < 3; $loop::i++) { clust($loop::i) } print qq{\n}; ;; for (my $i = 0; $i < 3; $i++) { clust2($i); } ;; ;; sub clust { my ($n) = @_; ;; for ($loop::i = 0; $loop::i < 3; $loop::i++) { my $m = $n * $loop::i; print qq{= $m }; } print qq{\n}; } ;; sub clust2 { my ($n) = @_; ;; for (my $i = 0; $i < 3; $i++) { my $m = $n * $i; print qq{- $m }; } print qq{\n}; } " = 0 = 0 = 0 - 0 - 0 - 0 - 0 - 1 - 2 - 0 - 2 - 4

Global data is, IMHO, always problematic. If you are looking for up-to-date on-line general introductory tutorials, I would suggest perlintro, perhaps followed by chromatic's freely downloadable Modern Perl.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1081351]
help
Chatterbox?
[Lady_Aleena]: Why does grep(/.*$in.*/, @my_modules) work but grep { $_ =~ /.*$in.*/; $_ } @my_modules not work? What did I do wrong in the second?
[tobyink]: Why are you returning $_ n your grep block? You should return a boolean.
[tobyink]: *in your grep block
[tobyink]: You can use grep { $_ =~ /.*$in.*/; } @my_modules but why not stick to grep(/.*$in.*/, @my_modules)? (The latter is faster.)
[shmem]: Lady_Aleena, in the first example grep evaluates the result from grep and if true, returns $_. In the second, it always returns $_
[shmem]: ..the result from the pattern match
[Lady_Aleena]: tobyink, I did after I failed to get the BLOCK to work. I can't seem to get my brain around grep BLOCK, though I'm okay with grep EXPR.
[shmem]: so in the second example grep returns all true elements of the list passed
[Lady_Aleena]: Okay, so grep BLOCK is not like map BLOCK where something might need to be returned at the end.
[tobyink]: grep { $_ =~ /.*$in.*/; } @my_modules should work just fine. The problem is that you were adding on ;$_ at the end of the block. Why were you doing that?

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (8)
As of 2017-05-27 07:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?