Perl: the Markov chain saw PerlMonks

### Re: perl error

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

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."
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 :)

Create A New User
Node Status?
node history
Node Type: note [id://917360]
help
Chatterbox?
 [marioroy]: msg choraba Maybe soon will have a job. My spirit is good. [marioroy]: ;-) was met for choroba.

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (7)
As of 2018-03-22 18:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
When I think of a mole I think of:

Results (282 votes). Check out past polls.

Notices?