Forging/Forging Perl Script

The official GemStone IV encyclopedia.
< Forging
Revision as of 00:14, 3 July 2015 by XYGON (talk | contribs) (Created page with "Used with scriptname.pl <CharacterName> <nowiki> use strict; use warnings; use DBI; my(%previous_inventory); my(%current_inventory); parse_logs(); sub get_sorted_files { ...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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"; } }