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>


Reply via email to