scratchpad
dasgar
<p>HTML::TokeParser test</p>
<c>
use strict;
use warnings;
use LWP::Simple;
use HTML::TokeParser;
my $url = "http://www.xecu.net/fantasy/index.shtml";
my $page = get($url);
my $p = HTML::TokeParser->new(\$page) || die "problem: $!\n";
</c>
<br><hr><br>
<p>For [Limbic~Region]:<br>
From CB:
<i>[Limbic~Region]: Assuming you are limited to only core modules (5.8.8) and you needed to determine what month it was N months ago and how many days in that month, how would you do it?</i>
</p>
<p>After asking a stupid question, I tried coming up with a doable solution. I doubt that it's the "best" answer, but I think it works. Providing the script below with a negative number tells it to go back X months and providing it with a positive number tells it to go forward X months.</p>
<readmore>
<c>
use strict;
use warnings;
my $delta = int(shift);
my $delta_years = int(abs($delta)/12);
my $delta_months = abs($delta) % 12;
my $cur_month = (localtime)[4];
my $cur_year = (localtime)[5]+1900;
if ($delta < 0) {
$delta_years *= -1;
$delta_months *= -1;
}
if ($delta_months < 0) {
if (abs($delta_months) > $cur_month) {$delta_years--;}
}
else {
if ($delta_months > (12 - $cur_month)) {$delta_years++;}
}
my $new_month = $cur_month + $delta_months;
my $new_year = $cur_year + $delta_years;
my @days = qw(31 28 31 30 31 30 31 31 30 31 30 31);
my @months = qw(January February March April May June July August September October November December);
my $answer = $days[$new_month];
if (($new_month == 2) && (Is_Leap_Year($new_year))) {$answer = 29;}
print "$months[$new_month] has $answer days.\n";
###########
sub Is_Leap_Year {
my $year = shift;
if (($year % 100) == 0) {return 1;}
if (($year % 4) == 0) {
if (($year % 25) == 0) {
return 0;
}
else {return 1;}
}
else {return 0;}
}
</c>
</readmore>
<br><hr><br>
<p>File slurp example:</p>
<c>
use strict;
my $file;
open(FH,"<",$file) || die "Unable to open file: $!\n";
{
local $/;
$file = <FH>;
}
close(FH);
</c>
<br><hr><br>
<p>Help for amittleider.</p>
<code>
use strict;
my @lc_alpha = ('a'..'z');
foreach my $file (@ARGV) {
my $error = 0;
my %count;
foreach my $alpha (@lc_alpha) {$count{$alpha} = 0;}
open(DAT,"<",$file) || $error++;
if ($error) {
print "Unable to open file '$file': $!\n";
print "Skipping the file.\n";
}
else {
while (<DAT>) {
my (@chars) = ($_ =~ m/([a-z])/gi);
foreach my $char (@chars) {
$count{lc($char)}++;
}
}
close(DAT);
print "The file '$file' has the following character counts:\n";
foreach my $alpha (@lc_alpha) {
print " $alpha -- $count{$alpha}\n";
}
print "\n";
}
}
</code>