in reply to Weird behavior with RAI and RSS.

In addition to missing binmode, I found a couple of other problems. First, don't forget to close an open filehandle. Second, make sure that everything is initialised. In your script, "publisher" wasn't initialised; also, you were using an unopened filehandle "OUT"---don't do that:). Here's what worked for me:
#!/usr/bin/perl use strict; use warnings; use Encode qw(decode); use HTTP::Request; use LWP::UserAgent; use XML::RAI; my $ua = 'LWP::UserAgent'->new; my $rss = shift @ARGV; binmode STDOUT, ":utf8"; open STDERR, '>', 'in.err'; open STDOUT, '>', 'out.log'; my $request = 'HTTP::Request'->new( 'GET', $rss ); print "Requesting...\n"; my $response = $ua->request($request); print ' Status: ', $response->status_line, "\n"; print ' Last modified: ', $response->header('last-modified'), "\n"; print ' Etag: ', $response->header('etag'), "\n\n"; my $response_content = decode( 'UTF-8', $response->content ); my $rai = 'XML::RAI'->parse_string( $response->content ); my $channel = $rai->channel; print "Channel:\n"; print ' Title: ' . $channel->title . "\n"; print ' Link: ' . $channel->link . "\n"; print ' Modified: ' . $channel->modified . "\n"; foreach $_ ( @{ $rai->items; } ) { print STDOUT "Item:\n"; print STDOUT ' Title: ' . $_->title . "\n"; print STDOUT ' Link: ' . $_->link . "\n"; print STDOUT ' Description: ' . $_->description . "\n"; print STDOUT ' Created: ' . $_->created . "\n"; print STDOUT "------------------------------------------------\n\n +"; } $request->header( 'If-Modified-Since', $response->header('last-modifie +d') ); $request->header( 'If-None-Match', $response->header('etag') ); close STDERR; close STDOUT;