Sponsored Content
Top Forums Shell Programming and Scripting Need to print hash of hash in table format Post 302986036 by durden_tyler on Friday 18th of November 2016 06:54:57 PM
Old 11-18-2016
Code:
$ 
$ cat -n print_hoh.pl
     1	#!/usr/bin/perl -w
     2	use strict;
     3	my ($result, $name, $activities, $value);
     4	
     5	# Subroutine section
     6	sub build_hoh {
     7	    ($name, $activities, $value) = @_;
     8	    $result->{$name}->{$activities} = $value;
     9	}
    10	
    11	sub print_hoh {
    12	    my @values = ();
    13	    my @names = sort keys %{$result};
    14	    my @activities = sort keys %{$result->{$names[0]}};
    15	    my $hdr_fmt = "%10s|%-6s|%-6s|%-6s|%-6s|\n";
    16	    my $row_fmt = "%-10s|%6d|%6d|%6d|%6d|\n";
    17	    printf($hdr_fmt, "", @names);
    18	    foreach my $act (@activities) {
    19	        foreach my $name (@names) {
    20	            push(@values, $result->{$name}->{$act});
    21	        }
    22	        printf($row_fmt, $act, @values);
    23	        @values = ();
    24	    }
    25	}
    26	
    27	# Main section
    28	build_hoh("robert", "running", 10);
    29	build_hoh("robert", "eating", 20);
    30	build_hoh("robert", "sleeping", 9);
    31	build_hoh("robert", "drinking", 0);
    32	build_hoh("robert", "work", 10);
    33	
    34	build_hoh("tom", "running", 8);
    35	build_hoh("tom", "eating", 5);
    36	build_hoh("tom", "sleeping", 9);
    37	build_hoh("tom", "drinking", 1);
    38	build_hoh("tom", "work", 10);
    39	
    40	build_hoh("cat", "running", 3);
    41	build_hoh("cat", "eating", 3);
    42	build_hoh("cat", "sleeping", 8);
    43	build_hoh("cat", "drinking", 2);
    44	build_hoh("cat", "work", 9);
    45	
    46	build_hoh("peter", "running", 3);
    47	build_hoh("peter", "eating", 2);
    48	build_hoh("peter", "sleeping", 10);
    49	build_hoh("peter", "drinking", 0);
    50	build_hoh("peter", "work", 10);
    51	
    52	print_hoh;
    53	
$ 
$ perl print_hoh.pl
          |cat   |peter |robert|tom   |
drinking  |     2|     0|     0|     1|
eating    |     3|     2|    20|     5|
running   |     3|     3|    10|     8|
sleeping  |     8|    10|     9|     9|
work      |     9|    10|    10|    10|
$ 
$

Note that the "keys" function returns the keys of a hash in an apparently random order.
I sorted names as well as activities, so the values in my output are ordered horizontally by name and vertically by activities.
This User Gave Thanks to durden_tyler For This Post:
 

10 More Discussions You Might Find Interesting

1. Programming

hash table implementations in C Language

Hello List, Iam searching for a solution where i can use hash based searching . In Detail , I have linked list which will be dynamically increasing . I need a best searching mechanisim such a way that it can take only one itereation . Right now iam using linear search which is taking... (11 Replies)
Discussion started by: vlrk
11 Replies

2. Programming

Creating a Hash Table

Dear Friends, I want to create a hash table using the standard Glib header (if possible) so that I can store a structure and keep the hash key(search key) based on a string. Any example code would be great since I am not able to get the main idea. best regards Skull (4 Replies)
Discussion started by: callmetheskull
4 Replies

3. UNIX for Dummies Questions & Answers

nested hash table

Hi, I have a nested hash table say for example as follows: %coins = ( 1 => { "Quarter"=>25, "Dime"=>10, "Nickel"=>5, }, 2 => { "asd"=>34, "qwe"=>45, ... (0 Replies)
Discussion started by: arthi
0 Replies

4. Shell Programming and Scripting

Print Entire hash list (hash of hashes)

I have a script with dynamic hash of hashes , and I want to print the entire hash (with all other hashes). Itried to do it recursively by checking if the current key is a hash and if yes call the current function again with refference to the sub hash. Most of the printing seems to be OK but in... (1 Reply)
Discussion started by: Alalush
1 Replies

5. Shell Programming and Scripting

Perl Hash:Can not keep hash data in the same order that it was inserted

Can Someone explain me why even using Tie::IxHash I can not get the output data in the same order that it was inserted? See code below. #!/usr/bin/perl use warnings; use Tie::IxHash; use strict; tie (my %programs, "Tie::IxHash"); while (my $line = <DATA>) { chomp $line; my(... (1 Reply)
Discussion started by: jgfcoimbra
1 Replies

6. Shell Programming and Scripting

perl hash - using a range as a hash key.

Hi, In Perl, is it possible to use a range of numbers with '..' as a key in a hash? Something in like: %hash = ( '768..1536' => '1G', '1537..2560' => '2G' ); That is, the range operation is evaluated, and all members of the range are... (3 Replies)
Discussion started by: dsw
3 Replies

7. Programming

Hash table

Hi, I hope someone can help me with the following prob.. I need to implement a hashtable whose KEYs are strings and VLAUEs are again hashtables. ie key - is a string and value -is another hashtable . So.... how am I supposed to be implementing my nested hashtable? Thanks in advance (1 Reply)
Discussion started by: andrew.paul
1 Replies

8. Shell Programming and Scripting

Compare values of hashes of hash for n number of hash in perl without sorting.

Hi, I have an hashes of hash, where hash is dynamic, it can be n number of hash. i need to compare data_count values of all . my %result ( $abc => { 'data_count' => '10', 'ID' => 'ABC122', } $def => { 'data_count' => '20', 'ID' => 'defASe', ... (1 Reply)
Discussion started by: asak
1 Replies

9. Shell Programming and Scripting

Dynamically parse BibTeX and create hash of hash

Hello gurus, Iam trying to parse following BibTex file (bibliography.bib): @book{Lee2000a, abstract = {Abstract goes here}, author = {Lee, Wenke and Stolfo, Salvatore J}, title = {{Data mining approaches for intrusion detection}}, year = {2000} } @article{Forrest1996, abstract =... (0 Replies)
Discussion started by: wakatana
0 Replies

10. Programming

Hash Table

I was looking at this script and was wondering if anyone can explain what this script does and how does it work. Thank you for any help. State* lookup(char* prefix, int create) { int i, h; State *sp = NULL ; h = hash(prefix); for (sp = statetab; sp != NULL; sp... (14 Replies)
Discussion started by: totoro125
14 Replies
FINCORE(1)						    BSD General Commands Manual 						FINCORE(1)

NAME
fincore -- query in-core status of file pages SYNOPSIS
fincore [-qs] file ... DESCRIPTION
The fincore utility queries and displays in-core status of specified files. Note that the result can already be stale when being output due to other activities in the system. Thus it should be used only for advisory purposes. The fincore utility accepts the following options. -q The quiet mode. Outputs nothing unless the file has in-core pages. -s The summary mode. Only shows number of pages. EXAMPLES
The following example shows that /bin/cat and /bin/cp are fully cached in-core while the other executables are not in-core. numbers shown in the default output are page indexes in the file of each in-core pages. % fincore /bin/c* /bin/cat: 0 1 2 3 /bin/chio: /bin/chmod: /bin/cp: 0 1 2 3 4 5 /bin/cpio: /bin/csh: % fincore -s /bin/c* /bin/cat: 4 / 4 in-core pages (100.00%) /bin/chio: 0 / 5 in-core pages (0.00%) /bin/chmod: 0 / 3 in-core pages (0.00%) /bin/cp: 6 / 6 in-core pages (100.00%) /bin/cpio: 0 / 36 in-core pages (0.00%) /bin/csh: 0 / 41 in-core pages (0.00%) SEE ALSO
mincore(2) AUTHORS
The fincore utility is written by YAMAMOTO Takashi. CAVEATS
The concept of page cache is an implementation detail of the kernel. The fincore utility works using some assumptions on the current imple- mentation. Thus it might stop working in a future version of NetBSD. BUGS
The amount of CPU time the current implementation of fincore utility would take is roughly proportional to the file sizes. Ideally it should be proportional to the number of in-core pages. BSD
January 5, 2012 BSD
All times are GMT -4. The time now is 07:49 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy