My mistake on $hash{'$UserID'}.  I found that and fixed it shortly after
sending the message, but it still doesn't allow me to populate the hash with
values.

If I were doing this in C, I'd send a structure pointer to the sub/function
and get back a the various populated fields.

I saw this done a while ago with a hash, but it was using a convention
something like:

&mysub(*hashname);

What's that all about?  How are items in %hashname referenced (or
dereferenced as the case may be) in mysub()?

--Chuck

> -----Original Message-----
> From: Wagner-David [mailto:[EMAIL PROTECTED]]
> Sent: Friday, November 16, 2001 10:29 AM
> To: 'Tomasi, Chuck'; '[EMAIL PROTECTED]'
> Subject: RE: Populating a referenced hash
> 
> 
>       Your print using:
>       print "User ID = $hash{'$UserID'}\n";
>         will use $UserID, but there is no such thing.
> 
>       In your sub, you are allowing only one value per 
> assignment, ie your keys are UserID, AssignedTo, etc and 
> there will be only one value.  If you want multiple values, 
> then will need to do concatentation, but if you are trying to 
> keep this all together, this may or may not work.
> 
>       To see the values you have, use:
> foreach (keys %hash) {
>    printf "%3d  %20s\n",$hash{$_}, $_; # prints the hash 
> value, hash Key
>  }
> 
> Wags ;)
> 
> -----Original Message-----
> From: Tomasi, Chuck [mailto:[EMAIL PROTECTED]]
> Sent: Friday, November 16, 2001 07:29
> To: '[EMAIL PROTECTED]'
> Subject: Populating a referenced hash
> 
> 
> Perl: 5.6.0
> OS: Solaris 7
> Goal: Scan a text file for key words/values and populate a hash
> 
> My parsing works, but the main() never sees the values 
> properly.  If I'm
> passing by reference, why isn't the hash I passed getting 
> populated in the
> main namespace?
> 
> Thanks
> 
> --Chuck
> 
> ----------arg.pl---------------
> #/usr/plx/bin/perl -w
> 
> use strict;
> 
> sub ref
> {
>       my      ($href, $aref) =@_;
>       my      (@leftovers);
> 
>       foreach (@$aref) {
>               chomp;
>               if (/^UserID\s+:\s+(\d+)/) {
>                       ${$href}{'UserID'} = $1;
>               } elsif (/^SupportGroup\s+:\s+(\d+)/) {
>                       ${$href}{'SupportGroup'} = $1;
>               } elsif (/^Assigned To\s+:\s+(\d+)/) {
>                       ${$href}{'AssignTo'} = $1;
>               } elsif (/^DateOpened\s+:\s+(\d+)/) {
>                       ${$href}{'DateOpened'} = $1;
>               } else {
>                       push(@leftovers, "$_\n");
>               }
>       }
>       return(@leftovers);
> }
> 
> my @array;
> my @remains;
> my (%hash);
> 
> open(F_TMP, "/tmp/tfile") || die("Cannot open text file");
> @array = <F_TMP>;
> close(F_TMP);
> 
> @remains = &ref(\%hash, \@array);
> print "User ID = $hash{'$UserID'}\n";
> print "Remains = " . @remains . "\n";
> -----------output------------
> User ID =
> Remains = 2
> 
> -- 
> 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]
> 

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to