Thanks David, that solved my problem.
-----Original Message-----
From: Wagner-David [mailto:[EMAIL PROTECTED]]
Sent: Friday, December 07, 2001 12:29 PM
To: Epperson, Randall W; Perl Beginners list (E-mail)
Subject: RE: Problem with replacing hash elements
Here is a shot which works with data provided, but others may
see other real problems with it. When it comes to hash and ref to to
array within hash, I have not the best understanding.
use strict "refs";
#-----------------------------------------------------------------
# define some variables
#-----------------------------------------------------------------
# $notify_file = "/usr/local/bin/unix_notify";
# open(NOTIFY, $notify_file) or
# die "$0: cannot open $notify_file: $!\n";
# load the notify file into a hash -------------------------------
while ( <DATA> ) {
chomp; # remove newline char
next if /^\s*#/; # skip comments
next unless s/^(.*?):\s*//; # look for xxx: yyyy format
$notify_email{$1} = [ split /;/ ];
}
foreach $key ( keys(%notify_email) ) {
print "the notify code is $key\n";
my $MyOffset = 0;
foreach my $element ( @{ $notify_email{$key} } ) {
if (exists $notify_email{$element}) {
# use of splice to replace which may not work correctly if
another array, but like said
# works with data provided.
#
splice( @{ $notify_email{$key}}, $MyOffset, 1, (@{
$notify_email{$element} }) );
}
$MyOffset++;
}
}
print "\n";
foreach $key ( keys(%notify_email) ) {
print "the notify code is $key\n";
foreach my $element ( @{ $notify_email{$key} } ) {
print " $element\n";
}
}
__DATA__
e-internalteam: e-randy;e-joel;e-darren
e-randy: [EMAIL PROTECTED]
e-joel: [EMAIL PROTECTED]
e-darren: [EMAIL PROTECTED]
^--- Script ends here
Output:
the notify code is e-internalteam
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
the notify code is e-joel
[EMAIL PROTECTED]
the notify code is e-darren
[EMAIL PROTECTED]
the notify code is e-randy
[EMAIL PROTECTED]
-----Original Message-----
From: Epperson, Randall W [mailto:[EMAIL PROTECTED]]
Sent: Friday, December 07, 2001 07:48
To: Perl Beginners list (E-mail)
Subject: Problem with replacing hash elements
Greetings
Here is the format of my notify file:
e-internalteam: e-randy;e-joel;e-darren
e-randy: [EMAIL PROTECTED]
e-joel: [EMAIL PROTECTED]
e-darren: [EMAIL PROTECTED]
I'm trying to build a hash of arrays that looks like this:
e-internalteam [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED]
e-randy [EMAIL PROTECTED]
e-joel [EMAIL PROTECTED]
e-darren [EMAIL PROTECTED]
Here is my code:
#!/usr/bin/perl -w
use strict "refs";
#-----------------------------------------------------------------
# define some variables
#-----------------------------------------------------------------
$notify_file = "/usr/local/bin/unix_notify";
open(NOTIFY, $notify_file) or
die "$0: cannot open $notify_file: $!\n";
# load the notify file into a hash -------------------------------
while ( <NOTIFY> )
{
chomp; # remove newline char
next if /^\s*#/; # skip comments
next unless s/^(.*?):\s*//; # look for xxx: yyyy format
$notify_email{$1} = [ split /;/ ];
}
# insure any notify codes are resolved
foreach $key ( keys(%notify_email) )
{
print "the notify code is $key\n";
foreach my $element ( @{ $notify_email{$key} } )
{
print "the email address is $element\n";
if (exists $notify_email{$element})
{ push my @new_array, (@{ $notify_email{$element} }); <===
problem here
print "new array is @new_array\n";
}
}
}
close NOTIFY;
My problem seems to be that I cannot replace the element in the
first hash entry with its value from later hash entries. I thought
if I could create a new_array and then reassign the first hash
entry...???
Any and all suggestions are welcome.
thanks...randy epperson
Lands' End Unix sysadmin
[EMAIL PROTECTED]
Don't anthropomorphize computers. They hate that.
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]