All pastes #351585 Raw Edit

ZOMG

public text v1 · immutable
·published 2007-02-12 07:24 UTC
rendered paste body
#!/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 = <STDIN>;
        print "\n------------------------\n\n";
        play($doc->{place}->{ $place->{select}->{option}->[$count-1]->{link}->{place} }) if $place->{select}->{option}->[$count-1]->{link};
    }
}

__END__