#!/usr/bin/perl use strict; use warnings; use XML::Simple; use Data::Dumper; my $file = 'game.xml'; my $xs1 = XML::Simple->new(); my $doc = $xs1->XMLin($file); my $dead = 0; play($doc->{place}->{$doc->{start}->{place}}); exit; sub play { my $place = shift; print $place->{text}, "\n-----------------------\n\n" if $place->{text}; return 2 if $place->{dead}; if ($place->{select}) { if (ref $place->{select}->{option} eq 'HASH') { $place->{select}->{option} = [$place->{select}->{option}]; # standardise to arrayref (XML::Simple is inconsistent in a perlish way) } my $count = 0; #print Dumper($place->{select}->{option}); #print ref($place->{select}->{option}); foreach my $option (@$place->{select}->{option}) { #errors $count++; print "$count: $option->{label}"; } my $choice = ; print "\n------------------------\n\n"; play($doc->{place}->{ $place->{select}->{option}->[$count-1]->{link}->{place} }) if $place->{select}->{option}->[$count-1]->{link}; } } __END__