# Note - don't use this code. See link above.
package PerlMonksChat;
use LWP::UserAgent;
use HTTP::Request;
use HTML::Entities;
sub new {
my $class=shift;
my $url=shift||'http://www.perlmonks.org/index.pl?node_id=2518';
my $self={};
$self->{url}=$url;
$self->{ua}=new LWP::UserAgent;
$self->{req}=new HTTP::Request('GET', $url);
$self->{cache}=[];
bless $self, $class;
return $self;
}
sub getalllines {
my $self=shift;
$ua=$self->{ua};
$req=$self->{req};
# print "(* grabbing *)\n";
my $response=$ua->request($req);
if ($response->is_success) {
my $c=$response->content;
# print $c;
if ($c =~ /<td.*?Chatterbox.*?<input[^>]*?>(.*?)<input/msi) {
my $chatline=$1;
$chatline=~s/[\n\r]//g;
# Split in lines and remove html tags
my @chatlines=grep { $_ }
map { s/<[^>]+?>//g; decode_entities($_); $_ }
split(/\s*<br>\s*/, $chatline);
return @chatlines;
}
}
else {
return ("error");
}
}
sub getnewlines {
my $self=shift;
my $cache=$self->{cache};
my @allines=$self->getalllines();
my @newcache;
# Don't use a regular cache, instead go back through them until we
# find the first one that is in the cache.
foreach (reverse @allines) {
last if ($cache->[0] && $_ eq $cache->[0]);
push @newcache, $_;
}
# Add the new lines to the cache
unshift @$cache, @newcache;
# Trim the cache to the last 50 lines
splice(@$cache,50);
return reverse @newcache;
}
1;
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|