opensourcebug has asked for the wisdom of the Perl Monks concerning the following question:

Hello Perl Bugs,

Below is the code which is useful to read file <file>.xml and parse it, cached it and store it into the db. But I am getting the error into that.
#!/usr/bin/perl my $parsed_rss_instances; sub doExternalChannel { my ($newsversion, $cid, $url)=@_; my $html_cache=""; my $nb=0; my $httpstatus=0; debug_msg(3, "in doExternalChannel, cid=$cid, newsversion:$newsver +sion\n"); my $content=""; my $url_digest = Digest::MD5::md5_hex( $url ); print STDERR "in reading file, using $url_digest for $url\n"; debug_msg(4, "Reading from file $channeldir/$url_digest.xml\n"); if (open FILE, "<$channeldir/$url_digest.xml") { # we can read the file close FILE; } else { warn "Cannot open $channeldir/$url_digest.xml\n"; return ("",0); } debug_msg(4, "About to parse $channeldir/$url_digest.xml\n"); eval { ### TRY my $rss_instance; if( $parsed_rss_instances->{$url_digest} ) { $rss_instance = $parsed_rss_instances->{$url_digest}; } else { $rss_instance = XML::RSS->new(); $rss_instance->parsefile("$channeldir/$url_digest.xml"); + $parsed_rss_instances->{$url_digest} = $rss_instance; } my $updatedb = 1; #we put result in DB ($html_cache, $nb) = &cacheHTMLChannel($cid, $newsversion, $rss_ins +tance, $updatedb); }; ### CATCH if ($@) { my ($name, $url)=DBAccess->sqlSelect ("name, url", "channel", +"cid=$cid"); warn "\n\n###WARNING: '$name' Channel file contains incorrect +RSS content cid=$cid:\n\n$@\n\nThis is not an error but a warning exp +laining that Metadot Portal Server fetched a file that is not a corre +ct RSS file. If this error persists please contact the creator of thi +s channel file or the channel webmaster, i.e. the guy running the web +site at $url\n\n\n"; } debug_msg(4, "doExternalChannel: end cid=$cid\n"); return($html_cache, $nb); }
This code is a part of metadot ( the free online portal server) so in that the feeds are not updating.
can u plz tell me wt is the problem I am new to perl so getting some problem to do some RnD witth this code snippt. for updating my feeds I have to run the file in prompt so I am getting like that
in reading file, using ba671e66ff6cbf92e300ec9ec32ee4f7 for http://xml +.newsisfree.com/feeds/39/1439.xml Cannot open channels/ba671e66ff6cbf92e300ec9ec32ee4f7.xml

so like that I am getting all the feed name one by one......
Plz help me or guide me......

Replies are listed 'Best First'.
Re: Problem with rss feed updation
by davido (Cardinal) on Sep 07, 2005 at 02:03 UTC

    Your code starts with a shebang line, which is the first line in any script, but then you proceed to make calls to various modules that I don't see being loaded via use or require anywhere. So apparently you've trimmed away something between the shebang line and the definition of doExternalChannel() that we're not seeing, which is probably important.

    The error message you're describing "in reading file, using......" doesn't show up as one of the messages possible within the code you've provided, perhaps this is an incomplete code fragment and you haven't shown us what could possibly generate that message? It definately doesn't compile under strictures, since $channeldir is never declared. And like I said, the modules you're using aren't loaded in the fragment you've shown.

    Part of my inability to be more helpful is that your post is further made difficult to decipher by overuse of l337speek: plz, u, wt, RnD, and otherwise difficult to parse sentence fragments. From Wikipedia: "This style of speaking has now been abandoned by a number of the original users, as it is supposedly being over-used by 'n00bs' in situations where it is not needed." It's hard enough knowing what you asking about without a disregard for readability.

    If Perl is an interest to you (and I hope it is) you will be greatly benefited by reading Learning Perl, published by O'Reilly & Associates. I understand that doesn't help with your immediate question. For actual help with the question at hand, I recommend following up in this thread with a little more coherent dialogue as to what you're doing, the exact problem you're seeing, and other details that may help us to get a grasp on what's going on. So far you've only provided enough for us to know you're having difficulty with a script of which you've provided a small discontiguous code fragment.


    Dave