Solved

problem when hash value is null

Posted on 2007-11-27
10
178 Views
Last Modified: 2010-03-05
I am retrieving a resultset from the database and pushing the data to hash.

push @{$h{$data[1]}{$data[0]}{$data[2]}{$data[3]}},@data[4,5];

This works fine if the data in 4th and 5th field is not null. But if it is null. The hash is not retrieving the result. Please help
0
Comment
Question by:saibsk
  • 5
  • 3
  • 2
10 Comments
 
LVL 39

Expert Comment

by:Adam314
ID: 20361442
What do you want to put in your hash when 4th and 5th fields are null?
0
 

Author Comment

by:saibsk
ID: 20361483
I am writing the data to a file. So when the data fields 1, 0, 2, 3 are same I group them and the corresponding 4th and 5th values are written to a file. But when the 4th and 5th fields are null. That record from the result set is not being written to the file.  If the 4th and 5th fields are null I want to write empty strings with corresponsing 0,1,2,3 fields to the file.
0
 

Expert Comment

by:shayne321
ID: 20361686
This would be one way:

$val1 = $data[4] || '';
$val2 = $data[5] || '';

push @{$h{$data[1]}{$data[0]}{$data[2]}{$data[3]}}, ($val1, $val2);

In this way if the 4th and 5th fields are undefined the "or" condition will evaluate to an empty string ('')
0
Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 

Accepted Solution

by:
shayne321 earned 500 total points
ID: 20361707
Or, without using temporary variables:

$data[4] = '' unless (defined $data[4]);
$data[5] = '' unless (defined $data[5]);
push @{$h{$data[1]}{$data[0]}{$data[2]}{$data[3]}},@data[4,5];
0
 

Author Comment

by:saibsk
ID: 20361782
doesn't work. Problem still exists. Please advise.
0
 
LVL 39

Expert Comment

by:Adam314
ID: 20361785
How are you writing the data to a file?  Post the code for that part of your program.
0
 

Author Comment

by:saibsk
ID: 20361805
for my $key1 (sort keys %h) {      
      
            print FH "\n#Group $key1 Accounts\n";
                  for my $key0 (sort keys %{$h{$key1}}){
                  for my $key2 (sort keys % {$h{$key1}{$key0}}){
                        for my $key3 (sort keys % {$h{$key1}{$key0}{$key2}}){
                              #print "\@\$h{$key1}{$key0}{$key2}{$key3} = @{$h{$key1}{$key0}{$key2}{$key3}}\n";
                  
                  @arr = ($key0,$key1,$key2,$key3,@{$h{$key1}{$key0}{$key2}{$key3}});
            print FH join("\t,",@arr)."\n";
            }
      }
}
      print FH "\n";      
}
0
 
LVL 39

Expert Comment

by:Adam314
ID: 20361862
push @{$h{$data[1]}{$data[0]}{$data[2]}{$data[3]}},[@data[4,5]];
0
 

Author Comment

by:saibsk
ID: 20365540
Doesn't seem to work
0
 

Author Comment

by:saibsk
ID: 20365859
I had to make few changes to the resultset with that shayne321 solution works.
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I have been pestered over the years to produce and distribute regular data extracts, and often the request have explicitly requested the data be emailed as an Excel attachement; specifically Excel, as it appears: CSV files confuse (no Red or Green h…
There are many situations when we need to display the data in sorted order. For example: Student details by name or by rank or by total marks etc. If you are working on data driven based projects then you will use sorting techniques very frequently.…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question