in reply to Re^2: 2 dimensional array
in thread 2 dimensional array

Ok. Well @table = @data[1..$height]; may not be doing what you expect.
If you are unsure about your data structures or are just curious, then you can use Data::Dumper
use Data::Dumper; $datafile = 'testdata.txt'; chomp $datafile; open (INPUT, $datafile) || die ("Unable to open $datafile"); @data = <INPUT>; close INPUT; @dim = split(/\,/, $data[0]); $width = $dim[0]; $height = $dim[1]; @table = @data[1..$height]; print Dumper(@table); die; for($row = 0; $row < $height; $row++) { for($col = 0; $col < $width; $col++) { $myString = $myString.$table[$row][$col]; } $myString =""; }
@table is not a multi-dimensional array (because of the way you tried to create it). Therefore, there is no such
$table[$row][$col]. Each element of @data is a single line of $datafile. @table = @data[1..$height]; is merely creating a new array which contains the same elements as @data.

I don't know exactly know what you are trying to do, but to get access to each byte of each element/row in @table, you can use substr(). You don't need a 2-dimensional array for that:

use strict; use warnings; my $datafile = $ARGV[0] || die "File to open was not provided!"; my @data; open (DATA_FILE, '<', $datafile) || die ("Unable to open $datafile"); @data = <DATA_FILE>; close(DATA_FILE); my @dim = split /\,/, $data[0]; my $width = $dim[0]; my $height = $dim[1]; my @table; push (@table, @data[1..$height]); my $myString =''; for(my $row = 0; $row < $height; $row++) { for(my $col = 0; $col < $width; $col++) { $myString .= substr($table[$row], $col, 1); } $myString =""; }

Replies are listed 'Best First'.
Re^4: 2 dimensional array
by ysth (Canon) on Jun 23, 2008 at 07:54 UTC
Re^4: 2 dimensional array
by mountain_drew (Initiate) on Jun 23, 2008 at 07:53 UTC
    argh!! you're right. for the section i showed you i don't need a 2 dimensional array. i didn't include all the code. what i'm trying to do (for a job interview) is take the entire table and search it... "Return the number of times you find each search word in the data. Words go forwards, backwards, horizontal, vertical and diagonal." i'll try your suggestion. i know i'm in over my head. i'm about to give up. -thanks
Re^4: 2 dimensional array
by mountain_drew (Initiate) on Jun 29, 2008 at 09:13 UTC
    omg!!! that worked. thanks!!