in reply to Re: Writing an array inside an array
in thread Writing an array inside an array

Thank you very much!
Now, it gives me the error saying
Global symbol "$graph" requires explicit package name
in the line
 $graph[$i] = \@sub;
Can you please help me again?
Thanks very much!

Replies are listed 'Best First'.
Re^3: Writing an array inside an array
by MishaMoose (Scribe) on Nov 18, 2010 at 13:17 UTC

    try using

    my @graph = ();
    when you initialize the variable at the top of your code. Think of it as a declaration. You should NOT use 'my' again on the variable however.

    HtH

    Misha/Michael - Russian student, grognard, bemused observer of humanity and self professed programmer with delusions of relevance
      Yeah, it still gives me the error
      "Global symbol "$graph" requires explicit package name at line 39".
      The code which I have is
      use strict; use Graph::Matching; use Graph::Matching qw(max_weight_matching); my @sub = []; my @list = split(',', $ARGV[0]); #print("@list"); my $n = 0; my @graph = (); my $i = 0; my $j = 0; for ($i=0; $n<my $graph; $i++) { for ($j=0; $j<=2; $j++) { $sub[$j] = $list[$n]; $n++; } $graph[$i] = \@sub; @sub = (); }

      Thank very much again!
        The file you've shown us doesn't even have 39 lines.

        Either you've shown us the wrong script, or Graph::Matching does something really scary.

        it's a minor nitpick, but why use a variable named sub in perl, knowing it's a keyword? if you forget a single sigil you could easily end up with code that runs but does something very unexpected. Also you continue to put "my" in front of graph in two places. In your first for loop, you probably wanted to just put $#graph and leave the second my off. Though because you just initialized your array, you're not going to ever enter that loop until you put something in the @graph array.
Re^3: Writing an array inside an array
by moritz (Cardinal) on Nov 18, 2010 at 13:11 UTC