Forging/Forging Perl Script

The official GemStone IV encyclopedia.
< Forging
Revision as of 00:14, 3 July 2015 by XYGON (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Used with scriptname.pl <CharacterName>

use strict;
use warnings;
use DBI;

my(%previous_inventory);
my(%current_inventory);

parse_logs();

sub get_sorted_files {
   my $path = shift;
   opendir my($dir), $path or die "can't opendir $path: $!";
   my %hash = map {$_ => (stat($_))[9] || undef} # avoid empty list
           map  { "$path$_" }
           readdir $dir;
   closedir $dir;
   return %hash;
}

sub parse_logs {
  my($charname) = $ARGV[0];
  # FOR NOW - delete all data prior to starting

  print "Parsing logs\n";
  my @arRank;
  my $curRank = 1;
  
  my %files = get_sorted_files("./");
  STDOUT->autoflush( 1 );
  foreach my $filename (sort{$files{$a} <=> $files{$b}} keys %files) {

    # Only 2nd argument's logs
    next if ($filename !~ /$charname*/);

    # Let's go through and find if there's a SHOP INVENTORY
    open my $logfile, '<', $filename or die "Could not open '$filename' $!\n";

    while (my $line = <$logfile>) {
      chomp $line;

      #-------------------------------------------------------------------------------
      # Full inventory snapshot manager

      if ($line =~ /180 sec/) { 
        # print "\nInventory update - $filename\t", scalar localtime($files{$filename}), "\n";
        $arRank[$curRank] += 1;

      } elsif ($line =~ /Aha, you learned something that time./) {
        $curRank += 1;
      }
    }
  }

  for (my $i=1; $i <= $curRank; $i++) {
    print $i, " - ", $arRank[$i], "\n";

  }
}