to get what you want to run under strict and warnings.#!/usr/bin/perl use strict; use warnings; print my $r = do { my $r; $r += $_ for 1..3; $r }
from the manual...
> perldoc -f do
do BLOCK
Not really a function. Returns the value of the last command in
the sequence of commands indicated by BLOCK. When modified by a
loop modifier, executes the BLOCK once before testing the loop
condition. (On other statements the loop modifiers test the
conditional first.)
"do BLOCK" does *not* count as a loop, so the loop control
statements "next", "last", or "redo" cannot be used to leave or
restart the block. See perlsyn for alternative strategies.
<snip>
you're executing a code block within do -- with a new scope. you'll need a my'd var there. also, you need to explicitly list the variable as the last statement in the block, in order to return the proper value.
~Particle *accelerates*
In reply to Re: when does the definition of a my variable take effect?
by particle
in thread when does the definition of a my variable take effect?
by John M. Dlugosz
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |