1package MakeMaker::Test::Setup::Recurs; 2 3@ISA = qw(Exporter); 4require Exporter; 5@EXPORT = qw(setup_recurs teardown_recurs); 6 7use strict; 8use File::Path; 9use File::Basename; 10 11my %Files = ( 12 'Recurs/Makefile.PL' => <<'END', 13use ExtUtils::MakeMaker; 14 15WriteMakefile( 16 NAME => 'Recurs', 17 VERSION => 1.00, 18); 19END 20 21 'Recurs/prj2/Makefile.PL' => <<'END', 22use ExtUtils::MakeMaker; 23 24WriteMakefile( 25 NAME => 'Recurs::prj2', 26 VERSION => 1.00, 27); 28END 29 ); 30 31sub setup_recurs { 32 while(my($file, $text) = each %Files) { 33 # Convert to a relative, native file path. 34 $file = File::Spec->catfile(File::Spec->curdir, split m{\/}, $file); 35 36 my $dir = dirname($file); 37 mkpath $dir; 38 open(FILE, ">$file") || die "Can't create $file: $!"; 39 print FILE $text; 40 close FILE; 41 } 42 43 return 1; 44} 45 46sub teardown_recurs { 47 foreach my $file (keys %Files) { 48 my $dir = dirname($file); 49 if( -e $dir ) { 50 rmtree($dir) || return; 51 } 52 } 53 return 1; 54} 55