#!/usr/bin/perl --
use constant DEBUG => !!( 0 || $ENV{PERL_DEBUG_MYAPPNAME} );
use CGI::Carp qw( fatalsToBrowser );
use CGI;
# to avoid those pesky 500 errors
BEGIN {
CGI::Carp::set_message(
sub {
print "<h1>something broke, we know what it is, thank you,
+ try again later</h1>\n";
if (DEBUG) {
print '<p>', CGI->escapeHTML(@_), '</p>';
}
}
);
} ## end BEGIN
use strict;
use warnings;
use Data::Dumper ();
use LWP::Simple qw( get );
use XML::RSS;
Main( @ARGV );
exit( 0 );
sub Main {
#~ return DebugCGI(); # generic, env.cgi
return RSSMoo('file:animals.rss.xml'); # for testing
#~ return RSSMoo("http://feeds.feedburner.com/animals");
} ## end sub Main
sub RSSMoo {
my $url = shift;
my $rss_content = get($url);
my $cgi = CGI->new;
my $feed = XML::RSS->new->parse($rss_content);
binmode STDOUT, ":encoding(UTF-8)";
$cgi->charset('UTF-8');
print $cgi->header, $cgi->start_html;
for my $item (
@{
$feed->{items}
}
)
{
print '<div style="border: 2px solid black ;">';
print FudgeA( $item );
print '</div>';
}
print '<div style="white-space: pre; overflow: scroll; height: 300
+px;">',
$cgi->escapeHTML( DD( $feed ) ),
'</div><hr><hr><hr>';
print $cgi->end_html;
} ## end sub RSSMoo
sub FudgeA {
my $iref = shift;
return '<p>'.CGI->a( { -href => $iref->{link}, }, CGI->escapeHTML(
+ $iref->{title} ) ).'</p>';
}
sub FudgeB {
my $iref = shift;
return CGI->new( $iref )->Dump . '<hr>';
}
sub FudgeC {
my $iref = shift;
my $ret = '<div>';
$ret .= '<p>' . CGI->escapeHTML( $iref->{title} ) . '</p>';
while( my( $k, $v ) = each %$iref ){
$ret .= "<p><strong>";
$ret .= CGI->escapeHTML( $k );
$ret .= "</strong> ";
$ret .= CGI->escapeHTML( $v );
$ret .= '</p>';
}
$ret .= '</div>';
return $ret;
}
sub DebugCGI {
my $cgi = CGI->new;
print $cgi->header(); # Write HTTP header
print $cgi->start_html,
$cgi->b( rand time, ' ', scalar gmtime ),
'<table border="1" width="%100"><tr><td>',
$cgi->Dump,
'</td>',
'<td><div style="white-space: pre-wrap; overflow: scroll;">',
$cgi->escapeHTML( DD($cgi) ),
'</div></td></tr></table>',
CGI->new( \%ENV )->Dump,
$cgi->end_html;
} ## end sub DebugCGI
sub DD { scalar Data::Dumper->new( \@_ )->Indent(1)->Useqq(1)->Dump; }
|