in reply to Undefined value as array reference

$_ is quite often a reference to something. It must be here too. When $_ = ('1' x $change); is executed, perl tries to change that to which $_ points, and it can't.

Change
$_ = ('1' x $change);
to
local $_ = ('1' x $change);

It's very good practice to localize $_ in your subs if you use it for situations like this. for/foreach with no variable localizes it for you, so you rarely need to localize it explcitily.

Replies are listed 'Best First'.
Re^2: Undefined value as array reference
by dragonchild (Archbishop) on Mar 11, 2005 at 02:34 UTC
    That doesn't work. However, if you chaneg the $_ = ('1' x $change); to my $x = ('1' x $change);, change the regex, and add a local $_; to the inner function, it runs to completion.

    Being right, does not endow the right to be rude; politeness costs nothing.
    Being unknowing, is not the same as being stupid.
    Expressing a contrary opinion, whether to the individual or the group, is more often a sign of deeper thought than of cantankerous belligerence.
    Do not mistake your goals as the only goals; your opinion as the only opinion; your confidence as correctness. Saying you know better is not the same as explaining you know better.