#!/usr/bin/perl use strict; use Parse::RecDescent; use Data::Dumper; $Data::Dumper::Indent = 1; $::RD_HINT = 1; my $parser = Parse::RecDescent->new( <<'END_GRAMMAR' ); number: /\d+/ newline: /\n|\r\n|\x0A|\x0D|\x0D\x0A/ key: "K " number newline { print ::Dumper({%item}); my $len = $item{number}; $return = substr( $text, 0, $len, "" ); print ::Dumper([$return,$text]);} value: "V " number newline { print ::Dumper({%item}); my $len = $item{number}; $return = substr( $text, 0, $len, "" ); print ::Dumper($text);} dumpfile: key value END_GRAMMAR die "Bad Grammar!" unless defined $parser; my $text = "K 7 svn:log V 13 Inital import "; my $result = $parser->dumpfile( $text ); die "Bad Result!" unless defined $result; print Dumper( $result );