Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: perl error

by dreadpiratepeter (Priest)
on Jul 28, 2011 at 22:57 UTC ( #917360=note: print w/replies, xml ) Need Help??


in reply to perl error

In the line in question, you are dealing with one element of the array, which is a scalar, so you use $ not @. To demonstrate with a simpler example, @a is an array. $a[0] is the first element in the array.


-pete
"Worry is like a rocking chair. It gives you something to do, but it doesn't get you anywhere."

Replies are listed 'Best First'.
Re^2: perl error
by topaz (Initiate) on Jul 28, 2011 at 23:50 UTC
    you mean i should do some thing like this ? :s
    use strict; #-- Define in/out files my $inf = "test.txt" ; #-- variables and handles my $line; my $a; my $b; my @result; @row = ((0) x 361); @column = ((0) x 361); my @Matrix = ( @row, @column); #--Open the input and output files open (IN, "$inf") || die "Can't read $inf"; while ($line = <IN>) { @result = split(/\s+/, $line); $a = $result[0]; $a = int($phi); $b = $result[1]; $b = int($psi); @Matrix[$row[($a+180)]][$column[($b+180)]] += 1; }
      Actually, your code has a number of problems.
      • that isn't how you initialize a 2-dimensional array. your initialization of @matrix will make a 722 element 1d array. You would need something like: @matrix=map {[(0) x 361]} (0..361);
      • From what I can see you want:  $Matrix[$a+180][$b+180] += 1;

      I would suggest giving Modern Perl or Learning Perl and Programming Perl a good read to get down some of the fundamentals.

      Update: Also you set $a and $b to values, then immediately set them to int($phi) and int($psi) which are undefined. If you were running with strict and warnings the compiler would have shown you that.



      -pete
      "Worry is like a rocking chair. It gives you something to do, but it doesn't get you anywhere."
        Many thanks for your advice :) I will try my best
        He definitely wants $row[$a+180] rather than $row($a+180) in the matrix operation, but I really think he wants just $a+180, since he never fills @row and @column with anything other than 0.


        -pete
        "Worry is like a rocking chair. It gives you something to do, but it doesn't get you anywhere."
        Yes ofcourse, sorry I missed that :s Many thanks for your help :)

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (5)
As of 2016-10-01 17:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How many different varieties (color, size, etc) of socks do you have in your sock drawer?






    Results (3 votes). Check out past polls.