| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package PrettyPrint;
- use strict;
- use warnings;
- use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
- $VERSION = 1.00;
- @ISA = qw(Exporter);
- @EXPORT = qw(&prettyPrint);
- @EXPORT_OK = qw(prettyPrint printArray printHash);
- sub prettyPrint($$);
- sub printArray($$);
- sub printHash($$);
- sub prettyPrint($$) {
- my ($data, $prefix) = @_;
- if (!defined($data)) {
- warn('No data provided');
- return undef();
- }
- my $str = undef();
- if (ref($data) eq 'HASH') {
- $str = printHash($data, $prefix);
- } elsif (ref($data) eq 'ARRAY') {
- $str = printArray($data, $prefix);
- } elsif (ref($data) eq '') {
- $str = $data;
- } else {
- warn('Unknown data type: ' . ref($data));
- }
- return $str;
- }
- sub printArray($$) {
- my ($array, $prefix) = @_;
- my $str = "\n";
- foreach my $item (@{$array}) {
- if (ref($item) eq 'HASH') {
- $str .= printHash($item, $prefix . substr($prefix, 0, 1));
- } elsif (ref($item) eq 'ARRAY') {
- $str .= printArray($item, $prefix . substr($prefix, 0, 1));
- } else {
- $str .= $item . "\n";
- }
- }
- return $str;
- }
- sub printHash($$) {
- my ($hash, $prefix) = @_;
- my $str = '';
- foreach my $key (keys %{$hash}) {
- $str .= $prefix . $key . ' => ';
- if (ref($hash->{$key}) eq 'HASH') {
- $str .= "\n" . printHash($hash->{$key}, $prefix . substr($prefix, 0, 1));
- } elsif (ref($hash->{$key}) eq 'ARRAY') {
- $str .= printArray($hash->{$key}, $prefix . substr($prefix, 0, 1));
- } else {
- $str .= $hash->{$key} . "\n";
- }
- }
- return $str;
- }
- # Modules must return true
- return 1;
|