#!/usr/bin/perl
use strict;
use Encode;
use Parse::AFP;
use File::Path 'rmtree';
die "Usage: $0 input.afp dir\n" unless @ARGV >= 1;
my $input = shift;
my $output = shift || 'dir';
rmtree([ $output ]) if -d $output;
mkdir $output;
my $afp = Parse::AFP->new($input, { lazy => 1 });
$afp->callback_members([qw( BR ER * )]);
sub Parse::AFP::BR::ENCODING () { 'cp500' };
sub BR {
my $name = substr($_[0]->Data, 0, 8);
print "Writing to $output/$name.afp\n";
$afp->set_output_file("$output/$name.afp");
$_[0]->remove;
}
sub ER { $_[0]->remove }
sub __ {
$_[0]->write; $_[0]->remove;
}