#!/usr/bin/perl ## $Id: eqguild,v 1.3 2003/07/27 16:58:02 baldio Exp $ ## eqguild --- display EverQuest guild list ## by Baldio Holyfield , Level 70 Cleric on Veeshan ## usage: eqguild [name1, name2, ...] ## example1: eqguild Veeshan ## example2: eqguild fire kala flame ## NOTE: If you have some problems, simply type following commands to convert data ## % mv guilds2.dat guilds2.dat.orig ## % tr "\n" "\r" < guilds2.dat.orig > guilds2.dat use strict; use FileHandle; my ($data, $seq, @rec, $pattern); ## display guilds2.dat file format ## while () { print; } exit 0; ## default variables $pattern = join("\|", @ARGV); STDOUT->format_lines_per_page("514"); ## open file and read data open (INFILE, "; ## print guild name and internal number for ($seq = 0; $seq < 512; $seq++) { @rec = split(pack("x"), substr($data, $seq * 96 + 8, 88)); if ($#ARGV < 0) { write if ($rec[0]); } else { write if ($rec[0] =~ /$pattern/io); } } ## close file close (INFILE); format STDOUT_TOP = Guild Name No. ----------------------------------- --- . format STDOUT = @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @>> $rec[0], $seq . __END__ guilds2.dat: Byte 1 to byte 8 : Record header Byte 9+ : Guild data block (size = 88) (Guild data block) Byte 1 to byte N : Guild Name The data is ended by a null (0x00) character The internal number of each guild is equal to the sequence of data block counts Data block count is up to 512 since the size of file (guilds2.dat) is 49156 bytes (96 * 512)