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]

Reply via email to