#!/usr/bin/perl use warnings; use strict; use Parse::RecDescent 1.94; use File::Slurp qw/read_file/; use File::Copy qw/move/; sub build_parser($$); build_parser 'lib/Mail/IMAPClient/BodyStructure/Parse.grammar' , 'Mail::IMAPClient::BodyStructure::Parse'; build_parser 'lib/Mail/IMAPClient/Thread.grammar' , 'Mail::IMAPClient::Thread'; sub build_parser($$) { my ($grammarfn, $package) = @_; print "* building $package\n"; my $grammar = read_file $grammarfn or die "cannot read grammar from $grammarfn: $!\n"; Parse::RecDescent->Precompile($grammar, $package); # clumpsy output by Parse::RecDescent my $outfn = $package . '.pm'; $outfn =~ s/.*\:\://; my $realfn = $grammarfn; $realfn =~ s/\.\w+$/.pm/; move $outfn, $realfn or die "cannot move $outfn to $realfn: $!\n"; }