Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
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."


Comment on Re: perl error
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; }
        Yes ofcourse, sorry I missed that :s Many thanks for your help :)
        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."
      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

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 exploiting the Monastery: (6)
As of 2015-07-04 18:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls