Advertisement
Guest User

Untitled

a guest
Oct 25th, 2016
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5. use YAML;
  6.  
  7. use File::Basename 'basename', 'dirname';
  8.  
  9. sub usage {
  10. my $script = basename $0;
  11. print "Traverse YAML structure\n";
  12. print "Usage: $script yaml-file\n";
  13. }
  14.  
  15. my $fname = $ARGV[0];
  16.  
  17. unless ($fname) {
  18. usage;
  19. exit 1;
  20. }
  21.  
  22. traverse(YAML::LoadFile($fname), "", *STDOUT);
  23.  
  24. sub traverse {
  25. my ($node, $path, $writer) = @_;
  26. if ('ARRAY' eq ref $node) {
  27. my $i = 0;
  28. for (@{$node}) {
  29. traverse($_, "$path\[$i\]", $writer);
  30. $i++;
  31. }
  32. return
  33. }
  34. if ('HASH' eq ref $node) {
  35. for (keys %{$node}) {
  36. traverse($node->{$_}, "$path.$_", $writer);
  37. }
  38. return
  39. }
  40. print $writer "$path\t$node\n";
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement