Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Re2: Perl Bug in Regex Code Block?

by Hofmator (Curate)
on Sep 03, 2001 at 17:32 UTC ( #109865=note: print w/replies, xml ) Need Help??

in reply to Re: Perl Bug in Regex Code Block?
in thread Perl Bug in Regex Code Block?

OK, to your first problem

It [@counts] is first used outside the for-loop
this is inside a single quoted string. It is the same as if I put it directly into the regex in the loop or declare it inside the loop. The reason I'm doing it this way is that I want to change this pattern inside the loop for my third testcase.

Name "main::counts" used only once: possible typo at ./ line + 20. 0: 12; @counts = (0) 1: 34; @counts = (0) 2: 56; @counts = (0) @main::counts = (6)
This is very interesting. As I interpret it, the code block inside the regex uses the global variable @main::counts which is otherwise blocked from view inside the loop by the my @counts declaration. A simple equivalent example
{ my $num = 0; $main::num = 5; # this instead of the regex print $num; # prints 0 } print $num; # prints 5 # or under use strict print $main::num; # prints 5 as well
Makes perfect sense. However with 5.6.1 you seem to be able to use lexical variables from the enclosing scope, but this is where the bug comes in. It works the first time but doesn't work the next times.

btw, the warning can be ignored in this case

-- Hofmator

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://109865]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (6)
As of 2019-06-17 10:34 GMT
Find Nodes?
    Voting Booth?
    Is there a future for codeless software?

    Results (77 votes). Check out past polls.

    • (Sep 10, 2018 at 22:53 UTC) Welcome new users!