The Perl version of the script
#!/usr/bin/perl
#Globals
my $max_lvl = 40;
#Main
system "clear";
#Windows or DOS use
#system "cls";
#Headers
print "Char \t \tClass Skill\tCC Skill\t \tStat\t\n";
print "Level\tXP\tMax Ranks\tMax Ranks\tFeats\tIncreases\t\n";
#Main loop
my $xp = 0;
my $feats= 0;
my $stats = 0;
for my $level ( 1 .. $max_lvl ) {
$xp = ($xp + ($level - 1) * 1000);
my $maxranks = $level + 3;
my $maxcc = $maxranks / 2.0;
my $feats_check = $level % 3;
my $feats_out = '--';
if ( ($feats_check == 0) || ( $level == 1) ) {
$feats++;
$feats_out = &level_th($feats);
}
my $stat_check = $level % 4;
my $stats_out = '--';
if ($stat_check == 0) {
$stats++;
$stats_out = &level_th($stats);
}
my $level_out = &level_th($level);
#output
print " $level_out\t$xp\t$maxranks\t\t$maxcc\t\t$feats_out\t$stats_out\t\n";
}
exit;
#level_th foramts numbers into 1st,2nd,3rd....
sub level_th {
my $s_input = shift;
my $level_th;
$s_input =~ m/(\d{1})$/;
my $s_check = $1;
if ( ($s_input eq "11") || ($s_input eq "12") || ($s_input eq "13") ) {
$level_th = "$s_input" . "th";
} elsif ( $s_check eq "1" ) {
$level_th = "$s_input" . "st";
} elsif ( $s_check eq "2" ) {
$level_th = "$s_input" . "nd";
} elsif ( $s_check eq "3" ) {
$level_th = "$s_input" . "rd";
} else {
$level_th = "$s_input" . "th";
}
return $level_th;
}
# vi: shiftwidth=3 tabstop=3 et