#!/usr/bin/perl use strict; use warnings; use Template; use File::Find::Rule; use File::Path qw(make_path); use File::Basename qw (fileparse); use File::Copy::Recursive qw(fcopy); my $out_dir = "out/"; #find all files my @files = File::Find::Rule->file() ->in('.'); #initialize template toolkit my $template = Template->new; if (! -d $out_dir) { make_path($out_dir) or die "Could not create outdir $out_dir: $!"; } foreach my $file (@files) { next if $file =~ /^$out_dir/; next if $file =~ /$0$/; if ($file =~ /\.tt2$/) { my $output; $template->process($file, undef, \$output) || die "Could not process file \"$file\": $!"; my ($name,$path,$suffix) = fileparse($file,qw (.tt2)); open (my $fh, '>', "$out_dir/$path/$name") or die "Could not write to $file: $!"; print $fh $output; close($fh); } else { fcopy ($file, "$out_dir/$file") or die "Could not copy $file to $out_dir/$file: $!"; } }