Arg, I was hoping I wouldn't have to do that (not that I can't), but it
would be much easier in some calls.  I have a variable like "$ToMailAddr".
Rather than setup a hash just to pass the value, it would be simpler for me
to say:

&mysub(%FromUser, {Address => $ToMailAddr});

where mysub is expecting two hashes, but really only uses the Address field
from the second.  If it must be references, it must be references...

--Chuck

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, November 15, 2001 12:14 PM
> To: Tomasi, Chuck
> Cc: '[EMAIL PROTECTED]'
> Subject: Re: How to pass two hashes to a sub
> 
> 
> Unfortunately you HAVE to use references to pass more than 
> one hash or more
> than one array for that matter ... perl flattens the list that are in
> arguments so it is impossible to tell where one list starts 
> and the other
> begins etc.  I dont get the setting up of temp hashes though 
> ... what u could
> do is this
>       sub mysub {
>               my ($h1,$h2) = @_;
> #perform your magic on the hash reference instead
>       }
> 
>       my %hash1 = (...
>       my %hash2 = (...
> 
>       &mysub(\%hash1,\%hash2);
> 
> On Thu, Nov 15, 2001 at 11:53:47AM -0600, Tomasi, Chuck 
> shaped the electrons to read:
> > Perl 5.6.0
> > Sun Solaris 2.7
> > 
> > I'd like to send two or more associative arrays (hashes) to 
> a sub.  It looks
> > like the first one makes it but the values of the second 
> never get passed.
> > Am I doing something wrong or is there a better way to do 
> this (I'm hoping
> > you don't say by reference or I'll have to setup a lot of 
> temporary hashes
> > to pass one or two key/value pairs on second, third, and 
> fourth args)
> > 
> > --------------Code----------------------
> > #/usr/local/bin/perl -w
> > 
> > use strict;
> > 
> > sub phash
> > {
> >         my      (%hash1, %hash2) = @_;
> > 
> >         print "val1 = $hash1{'val1'}\n";
> >         print "val2 = $hash2{'val2'}\n";
> > }
> > 
> > my %h1 = ( val1 => 56 );
> > my %h2 = ( val2 => 45 );
> > 
> > &phash(%h1, %h2);
> > ----------------output--------------------
> > $ perl mhash.pl
> > val1 = 56
> > val2 =
> > 
> > -- 
> > 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