#!/usr/bin/perl -w
use strict;
use diagnostics;
use Storable qw( nfreeze thaw );
die "USAGE: hashbrowns.pl \n"
unless @ARGV == 3;
my $server = $ARGV[0];
my $ipaddr = $ARGV[1];
my $funct = $ARGV[2];
#
open SERVERS, ">>homefries.db"
or die "Hold on there buckaroo: $!\n";
my $boxen = {
'host' => "$server",
'address'=> "$ipaddr",
'funct' => "$funct",
};
my $sirinfo = nfreeze( $boxen );
$_ = unpack("H*", $sirinfo) ."\n";
print SERVERS $_;
print "$boxen->{host}\n";
print "$boxen->{address}\n";
print "$boxen->{funct}\n";
#
close SERVERS;
exit;
####
#!/usr/bin/perl -w
#
# ch02/marshal/update_storable: Updates the given megalith data file
# for a given site. Uses Storable data
# and updates the map reference field.
use Storable qw( nfreeze thaw );
die "Usage: updatemegadata \n"
unless @ARGV == 3;
my $megalithFile = $ARGV[0];
my $siteName = $ARGV[1];
my $siteMapRef = $ARGV[2];
my $tempFile = "tmp.$$";
open MEGADATA, "<$megalithFile"
or die "Can't open $megalithFile: $!\n";
open TMPMEGADATA, ">$tempFile"
or die "Can't open temporary file $tempFile: $!\n";
while ( ) {
my $frozen = pack "H*", $_;
my $fields = thaw( $frozen );
my ( $name, $location, $mapref, $type, $description ) = @$fields;
next unless $siteName eq $name;
$fields = [ $name, $location, $siteMapRef, $type, $description ];
$frozen = nfreeze( $fields );
$_ = unpack( "H*", $frozen ) . "\n";
}
continue {
print TMPMEGADATA $_
or die "Error writing $tempFile: $!\n";
}
close MEGADATA;
close TMPMEGADATA
or die "Error closing $tempFile: $!\n";
unlink $megalithFile
or die "Can't delete old $megalithFile: $!\n";
rename $tempFile, $megalithFile
or die "Can't rename '$tempFile' to '$megalithFile': $!\n";
exit 0;