in reply to Commenting irrelevant code produces weirds errors

Adding the necessary bits to make your sample run the error relates to how you generate @taulell and what then happens to it. Here is some sample code that reproduces the problem and also demonstrates what is happening.

use Data::Dumper; # everything is fine using this @taulell array #@taulell = ( ['B1','B2','B3'], ['B4','B5','Y1'] ); # here is how you set @taulell sub inicialitzacions { $torn='B'; @{$taulell[3]}[3,4]=qw(B N); @{$taulell[4]}[3,4]=qw(N B); @pos{'x','y'}=(2,2); } inicialitzacions(); # @taulell looks like this print Dumper(\@taulell); my $num=0; for(@taulell) { $num+=grep /B/,@$_; } # @taulell now looks like this print Dumper(\@taulell); addstr(2,1,"B = $num"); addstr(24,3, "Y = $pos{y}"); $num=0; map { $num+=grep /B/,@$_; } @taulell; addstr(3,1,"N = $num"); addstr(24,35,"Tecla = <$key> "); # @taulell now looks like this print Dumper(\@taulell); sub addstr {}

What you can see is that first loop modifies your data structure (into an array of arrays) which allows your map to run. When you kill the first loop you pass map your 'really weird' data structure and the map chokes

cheers

tachyon

s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print

Replies are listed 'Best First'.
Re: Re: Commenting irrelevant code produces weirds errors
by Anarion (Hermit) on Feb 17, 2002 at 15:13 UTC
    Thx tachyon, but where are or these
    ${\$VAR1->[3][0]}
    come from?

    If you see the entire program i just want to initialize those 4 scalars. May i have to initialize all the array to make it work with map?

    And another thing i dont understand too much is why for modify de array? Its a perl "feature" ? cough

    $anarion=\$anarion;

    s==q^QBY_^=,$_^=$[x7,print


      I have no idea why it generates that weird data structure!. It is not as though it is even consistent as the first value is undef (as you might expect) but then the other ones......are references to this undef value. Looks a bit like a {cough} feature to me. This may be a feature either of perl or Data::Dumper. As to why the grep then modifies this matrix just by looking at it -> GOK. Anyway I think this is probably the matrix you wanted in @taulell.

      sub inicialitzacions { $torn='B'; @taulell = ([],[],[],[('','','','B','N')],[('','','','N','B')]); @pos{'x','y'}=(2,2); }

      cheers

      tachyon

      s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print