root/lib/PostData.pm

Revision 89, 2.8 kB (checked in by cholt, 1 year ago)

error

Line 
1 package PostData;
2 #----------------------------------------------------------#
3 # Copyright (C) 1997 Washington University, St. Louis, MO. #
4 # All Rights Reserved.                                     #
5 #                                                          #
6 # Author: Ian Korf                                         #
7 # Send all comments to ikorf@sapiens.wustl.edu             #
8 #                                                          #
9 # DISCLAIMER: THIS SOFTWARE IS PROVIDED "AS IS"            #
10 #             WITHOUT WARRANTY OF ANY KIND.                #
11 #----------------------------------------------------------#
12 require Exporter;
13 @PostData::ISA = qw(Exporter);
14 @EXPORT = qw(PostData);
15 use Term::ANSIColor;
16 use strict;
17          
18
19 =head1 NAME PostData
20            
21 =cut
22              
23 #----------------------------------------------
24 # PostData - output simple data structures
25 #
26 # Prints out a data structure in regular format
27 # Only follows ARRAY, HASH, and SCALAR
28 # Does not terminate recursive data structures
29 #----------------------------------------------
30 sub PostData {
31         my ($data,$max,$level) = @_;
32         $level = 1 unless defined $level;
33         $max = 100 unless defined $max;
34         my ($i,$key,$value);
35         my $tab = "  " x $level;
36              
37         my $ref = ref($data);
38         if (not $ref) {
39                if (defined $data) {print "$data\n"}
40                    else {print "UNDEFINED VALUE\n"}
41                }
42         elsif ($ref eq 'SCALAR') {
43                print "$ref\n";
44                return if $max == $level;
45                print $tab,"$$data\n";
46         }
47         elsif ($ref eq 'ARRAY') {
48                print "$ref\n";
49                $level++;
50                return if $max == $level;
51                for($i=0;$i<@$data;$i++) {
52                      print $tab,"[$i] = ";
53                      PostData($data->[$i],$max,$level);
54                }
55         }
56         elsif ($ref eq 'REF') {
57                print "$ref\n";
58                $level++;
59                return if $max == $level;
60                PostData($$data,$max,$level);
61         }
62         elsif ($ref eq 'HASH') {
63                print "$ref\n";
64                $level++;
65                return if $max == $level;
66                foreach $key (sort keys %$data) {
67                       print $tab,"{$key} = ";
68                       PostData($data->{$key},$max,$level)
69                }
70       }
71       #--- MY hack
72       elsif ($ref eq 'FileHandle'){
73                 print "$ref\n";
74       }
75       #--- end
76       elsif ($ref ne 'CODE') {
77                print "$ref \n";
78                $level++;
79                return if $max == $level;
80                foreach $key (sort keys %$data) {
81                        print $tab,"{$key} = ";
82                        PostData($data->{$key},$max,$level)
83                }
84        }
85        else {
86                print "$ref not handled by PostData\n";
87        }
88 }
89              
90 1;
91              
Note: See TracBrowser for help on using the browser.