SPUG: VEXED "Barbarian needs food badly" Scalar inside Hash problem

Souza Jonathan jonathan.souza at usg.sms.siemens.com
Wed Dec 18 21:49:06 CST 2002


I have a vexing problemo.  First I have done this before in other programs, but can't get it to work here.  I want to use a variable inside a hash.


Here is my code snippet it is a segment out of a larger package.  My problem in in SetupEnvVariables.





package monitor;


#----------
#Method Name: SetupEnvVariables
#Purpose: Modify system environment variables
#Parameters: None
#Calls: Win32::AdminMisc::SetEnvVar && Win32::AdminMisc::DelEnvVar
#Sets: None
#Returns: 1 if completed || undef if error
#----------
sub SetupEnvVariables
{
	my ($self) = @_;
	my ($machine_name, $env_value);

	#MAKE ANY CHANGES TO THE ENVIRONMENTAL VARIABLES
	$machine_name = $self->{WHOAMI}{MACHINE_NAME};
	print "MN: $machine_name\n";                                #prints SP2007 which is correct
#print Dumper($self->{MACHINES});                                 #dumps correctly

print "Hours: $self->{MACHINES}{$machine_name}{HOURS_TO_RUN}\n";  #error says "Use of uninitialized value in string.."
print "Hours2: $self->{MACHINES}{SP2007}{HOURS_TO_RUN}\n";        #prints correctly -some integer value.

	if (exists $self->{MACHINES}{$machine_name}{ENV_VARIABLES}) #always doesn't exist because $machine_name is not being
	{ 
		#blah blah
	}


#etc....
}



#----------
#Method Name: New
#Purpose: Constructor
#Parameters: None
#Calls: Configure
#Sets: Creates default hash and reference to objects methods
#Returns: Object reference
#----------
sub New
{
	my ($class) = @_;
	my $self = {
				'WHOAMI' => {},
				'MACHINES' => {},
				};

	bless $self, $class;
print "In New\n";
	$self->Configure();

	return $self;
} #End New




#----------
#Method Name: Configure
#Purpose: Read any configuration files
#Parameters: None
#Calls: Automation::Read_ConfigXML
#Sets: $self->{WHOAMI}{MACHINE_NAME} & $self->{WHOAMI}{XML_FILE}
#Returns: 1 Completed || undef errors
#----------
sub Configure
{
	my ($self) = @_;
	my ($key, $value, $open);

print "IN CONFIGURE\n";
	#Read WhoAmI.txt
	if (!($open = open (FH, "<", "WhoAmI.txt")))
	{
		sleep (20);
		if (!($open = open (FH, "<", "WhoAmI.txt")))
		{
			print "Failed to open WhoAmI.txt\n";
			return undef;
		}
	}

	if ($open)
	{
		while (<FH>)
		{
			($key, $value) = split /=/;
			$self->{WHOAMI}{$key} = $value;
		}
		close FH;

		my $auto = Automation->New();
		$auto->Read_ConfigXML($self->{WHOAMI}{XML_FILE}, $self->{MACHINES});
#print Dumper($self->{MACHINES}); #dumps correctly
		undef $auto;
		return 1;
	}

	return undef; #should never hit this
	
} #End Configure



#########################
package main;
use strict;

my $monitor = Monitor->New();
$monitor->SetupEnvVariables();

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.pm.org/archives/spug-list/attachments/20021218/219199d7/attachment.htm


More information about the spug-list mailing list