Hello List. Found the problem:
foreach my $record (@{dataFileHash{$datafile}}) { Should have been: foreach my $record (@{$dataFileHash{$datafile}}) { Sorry ! I stared at this for like an hour and didn't notice the missing $.... Can anyone tell me what the Argument "NH_DATA01" isn't numeric in helem at ./nhsDiffSchema.pl line 236. error means though? It would be nice to know what a helem is in the future :) > > From: <[EMAIL PROTECTED]> > Date: 2005/04/25 Mon PM 07:29:29 GMT > To: <beginners@perl.org> > Subject: 'Bad index while coercing array into hash' error > > Greetings > > I am getting the following error when running a script using an anonymous > array of hashes: > > Bad index while coercing array into hash at ./nhsDiffSchema.pl line 240 > > Here is the code snipt that both assigns values to the array of hashes and > the code which displays the values back (where the error is coming from) : > > * I have a scalar named $dataFiles that contains info similar to the > following: > > export/spiderman1/ora_data_1/oradata/EHEALTH/SYSTEM01.dbf > > > > > > SYSTEM > 250 160.61 > 89.39 1 89.39 > 35.76 YES > > Here is the code: > > my @dataFilesInfo=split /\n/,$dataFiles; > foreach my $datafile (@dataFilesInfo) { > next if $datafile =~ m/^$/; > my @attributes=split /\s+/,$datafile; > push @{$dataFileHash{$attributes[0]}},{ > tableSpace => "$attributes[1]", > allocMB => "$attributes[2]", > usedMB => "$attributes[3]", > freeMB => "$attributes[4]", > numFrags => "$attributes[5]", > maxFrag => "$attributes[6]", > percentFree => "$attributes[7]", > autoExtend => "$attributes[8]" > }; > } > > oreach my $datafile (sort keys %dataFileHash) { > print "datafile : $datafile\n"; > foreach my $record (@{dataFileHash{$datafile}}) { > print "\tTablespace: $record->{tableSpace}\n"; > print "\tMB Allocated: $record->{allocMB}\n"; > print "\tMB Used: $record->{usedMB}\n"; > print "\tMB Free: $record->{freeMB}\n"; > print "\tNumber Frags: $record->{numFrags}\n"; > print "\tMax Frag: $record->{maxFrag}\n"; > print "\t% Free: $record->{percentFree}\n"; > print "\tAuto Extend: $record->{autoExtend}\n"; > }; > } > > The error is coming from line 236, which is: > > print "\tTablespace: $record->{tableSpace}\n"; > > If I comment out that line, the error then goes to 237. So, it would seem I > am accessing the values incorrectley some how but I can't seem to figure it > out. > > I have used the Data::Dumper module to dump the contents of the array of > hashes and it seems to be populated as I thought: > > $VAR1 = '/export/spiderman1/ora_data_1/oradata/EHEALTH/SYSTEM01.dbf'; > $VAR2 = [ > { > 'usedMB' => '160.61', > 'autoExtend' => 'YES', > 'freeMB' => '89.39', > 'allocMB' => 250, > 'percentFree' => '35.76', > 'numFrags' => 1, > 'tableSpace' => 'SYSTEM', > 'maxFrag' => '89.39' > } > ]; > $VAR3 = '/export/spiderman1/ora_data_1/oradata/EHEALTH/NH_INDEX01.dbf'; > $VAR4 = [ > { > 'usedMB' => '394.52', > 'autoExtend' => 'YES', > 'freeMB' => '86.48', > 'allocMB' => 481, > 'percentFree' => '17.98', > 'numFrags' => 40, > 'tableSpace' => 'NH_INDEX', > 'maxFrag' => '57.13' > } > ]; > > ..... > > I am utterly confused as I have similar code that works correctley: > > my @tableInfo=split /\n/,$allTables; > foreach my $table (@tableInfo) { > my @attributes=split /\s+/,$table; > push @{$tables{$attributes[0]}},{ > table_space => "$attributes[1]", > num_rows => "$attributes[2]" > }; > } > > foreach my $table (sort keys %tables) { > print "table:$table\n"; > foreach my $record (@{$tables{$table}}) { > print "\tTablespace=$record->{table_space}\n"; > print "\tNumber of rows=$record->{num_rows}\n\n"; > } > } > > I am using strict and when I enable warnings, I see the following message: > > Argument "NH_DATA01" isn't numeric in helem at ./nhsDiffSchema.pl line 236. > > I am not sure what that means and what 'helem' refers too. > > Help !! > > Thanks :) > Jason > > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > <http://learn.perl.org/> <http://learn.perl.org/first-response> > > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>