Last active
October 25, 2016 02:27
-
-
Save akanehara/8f16733217a289d1e8cddc79dd7a0621 to your computer and use it in GitHub Desktop.
YAMLのノードをトラバース
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/perl | |
use strict; | |
use warnings; | |
use YAML; | |
use File::Basename 'basename', 'dirname'; | |
sub usage { | |
my $script = basename $0; | |
print "Traverse YAML structure\n"; | |
print "Usage: $script yaml-file\n"; | |
} | |
my $fname = $ARGV[0]; | |
unless ($fname) { | |
usage; | |
exit 1; | |
} | |
traverse(YAML::LoadFile($fname), "", *STDOUT); | |
sub traverse { | |
my ($node, $path, $writer) = @_; | |
if ('ARRAY' eq ref $node) { | |
my $i = 0; | |
for (@{$node}) { | |
traverse($_, "$path\[$i\]", $writer); | |
$i++; | |
} | |
return | |
} | |
if ('HASH' eq ref $node) { | |
for (keys %{$node}) { | |
traverse($node->{$_}, "$path.$_", $writer); | |
} | |
return | |
} | |
print $writer "$path\t$node\n"; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment