# -*- mode: perl6 -*- role Maker[:$from,:$to] { has $!wc; has $.basename; has $.dir; method process-contents(:$from-contents) { ... } method get-files() { my %dsts = $!wc.get-files($.dir,$.basename,$from); my %srcs = $!wc.get-files($.dir,$.basename,$to); for %srcs.keys -> $lang { my $src = %srcs{$lang}; next if %dsts{$lang} and %dsts{$lang}.modified after $src.modified; my $processed-contents = .process-contents($src.slurp); %dsts{$lang} = $!wc.put-file($.dir,$.basename,$lang,$to, $processed-contents) } } }