Трабл был в регулярных выражениях. Они были настроены немного на другой формат.
Вот исправленная версия:

Код:
#!/usr/bin/perl
$URL = "http://www.rbc.ru/"; # URL with rate
$keyword = "Нал. USD"; # stamp of start line
$fhistory = "rate_history.txt"; # file of rate history
$frate = "rate.txt"; # file of rate
$add_percent = 2.; # add that percents to rate before saving
$format = "%5.1f"; # format of rate to save
$timeregexp = '\d+\:\d+'; # regular expression to extract time;
$rateregexp = '\d+\,\d+'; # regular expression to extract rate;
use LWP::Simple;
$content = get($URL);
@arr = split(/\n/, $content);
$flag = 0;
for (@arr) {
if ($flag == 0) {
if (/$keyword/) $flag = 1;
} elsif ($flag == 1) {
/($timeregexp)/;
print "Time: $1\n";
$date = $1;
$flag = 2;
} elsif ($flag == 2) {
/($rateregexp)/;
print "Rate: $1\n";
$rate = $1;
$flag = 3;
}
}
$rate =~ s/,/./;
$rate *= (1+$add_percent/100);
$rate = sprintf($format,$rate);
open (OUT, ">>$fhistory");
print OUT "$date\t$rate\n";
close OUT;
open (OUT, ">$frate");
print OUT "$rate";
close OUT;