#!/usr/bin/perl -w use strict; use feature 'say'; use XML::Feed; use YAML::Syck; use URI; use Template; my $feeds = LoadFile( shift ); my $hash_entries; foreach ( @$feeds ) { my $feed = XML::Feed->parse( URI->new( $_->{ url } ) ); for my $e ( $feed->entries ) { my $date = $e->issued->strftime( '%Y.%m.%d' ); push @{ $hash_entries->{ $date } }, { source => $_->{ source }, date => $e->issued->hms, title => $e->title, link => $e->link, source_url => $_->{ source_url }, }; } } my @dates = keys %$hash_entries; my @sorted_dates = sort { $a cmp $b } @dates; my $hash_templates; foreach my $date ( reverse @sorted_dates ) { my @actions = sort { $b->{ date } cmp $a->{ date } } @{ $hash_entries->{ $date } }; push @{ $hash_templates->{ entries } }, { date => $date, actions => \@actions }; } my $template = Template->new; $template->process( 'lifestream.tt', $hash_templates, \my $content ) or die $!; open my $fh, '>:utf8', 'public/index.html'; print $fh $content; close $fh;