package Iotta::Output::Metafile; use strict; require Iotta::Elem; our @ISA = ("Iotta::Elem"); sub run { my $s = shift; my $meta = shift; my $data = shift; my $file = $s->prepend . $$meta{input} . $s->append; my $dir = $file; $dir =~ s#^(.*)/.*?$#$1#; mkdirp ($dir); print STDERR " writing meta ($file)...\n"; open (FILE, ">$file") || return 1; foreach (keys %$meta) { print FILE "'$_' = '$$meta{$_}'\n"; } close FILE; $s->next->run ($meta, $data) if ($s->next); return 0; } sub mkdirp { my $dir = shift; my $d; my @dirs = split /\//, $dir; for (@dirs) { $d .= "$_/"; if (! -d $d) { #print STDERR "creating: $d\n"; mkdir $d; } } } sub setup { my $s = shift; my $o = shift; $s->append ($$o{append}); $s->prepend ($$o{prepend}); } sub initialize { my $self = shift; $self->SUPER::initialize (@_); $self->{prepend}=""; $self->{append}=""; } 1;