PrettyPrint.pm 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package PrettyPrint;
  2. use strict;
  3. use warnings;
  4. use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
  5. $VERSION = 1.00;
  6. @ISA = qw(Exporter);
  7. @EXPORT = qw(&prettyPrint);
  8. @EXPORT_OK = qw(prettyPrint printArray printHash);
  9. sub prettyPrint($$);
  10. sub printArray($$);
  11. sub printHash($$);
  12. sub prettyPrint($$) {
  13. my ($data, $prefix) = @_;
  14. if (!defined($data)) {
  15. warn('No data provided');
  16. return undef();
  17. }
  18. my $str = undef();
  19. if (ref($data) eq 'HASH') {
  20. $str = printHash($data, $prefix);
  21. } elsif (ref($data) eq 'ARRAY') {
  22. $str = printArray($data, $prefix);
  23. } elsif (ref($data) eq '') {
  24. $str = $data;
  25. } else {
  26. warn('Unknown data type: ' . ref($data));
  27. }
  28. return $str;
  29. }
  30. sub printArray($$) {
  31. my ($array, $prefix) = @_;
  32. my $str = "\n";
  33. foreach my $item (@{$array}) {
  34. if (ref($item) eq 'HASH') {
  35. $str .= printHash($item, $prefix . substr($prefix, 0, 1));
  36. } elsif (ref($item) eq 'ARRAY') {
  37. $str .= printArray($item, $prefix . substr($prefix, 0, 1));
  38. } else {
  39. $str .= $item . "\n";
  40. }
  41. }
  42. return $str;
  43. }
  44. sub printHash($$) {
  45. my ($hash, $prefix) = @_;
  46. my $str = '';
  47. foreach my $key (keys %{$hash}) {
  48. $str .= $prefix . $key . ' => ';
  49. if (ref($hash->{$key}) eq 'HASH') {
  50. $str .= "\n" . printHash($hash->{$key}, $prefix . substr($prefix, 0, 1));
  51. } elsif (ref($hash->{$key}) eq 'ARRAY') {
  52. $str .= printArray($hash->{$key}, $prefix . substr($prefix, 0, 1));
  53. } else {
  54. $str .= $hash->{$key} . "\n";
  55. }
  56. }
  57. return $str;
  58. }
  59. # Modules must return true
  60. return 1;