On Sat, 2002-06-22 at 21:42, Shawn wrote:
> >>> On Sat, 2002-06-22 at 13:53, Shawn wrote:
> >>>> Is there a reason for this, and is there a way I can see what the 
> >>>> actuall values are?  The values are passed just fine to the sub routines,
> >>>>  I just want my debug log to show that values passed without having to 
> >>>> set up a for loop (ie: print %$hash_ref).
> >>>>
> >>>> TIA,
> >>>> Shawn
> >>>
> >>> probably you are trying to use the hash in scalar context,
> >>>
> >>> you should be able to se the values like this:
> >>>
> >>> print "@{ [ values %$hash_ref ] }\n";
> >>
> >> way Close
> >>
> >> my %hash = (user => 1,pass => 2,thing => 3,ptr => [qw(4 5)],);
> >>
> >> my $hash_ref = \%hash;
> >>
> >> print split(/ /,%$hash_ref ), "\n";
> >> print "Not Split: ", %$hash_ref, " :\n";
>  >> my @array = %$hash_ref;
> >> print "Array Game: @array :\n";
> >>
> >> print " Player: @{ [  %$hash_ref ] }\n";
> >>
> >> generates
> >>
> >> 4/8
> 
> >
> > This is the number of buckets used over the number of buckets.  Probably
> > not terribly useful unless you are optimising hashing algorithms.  In
> > this case it shows that perl has done a pretty good job with the hash.
> 
> 
> Can you elaborate more on the 'buckets' Paul, or point me to a doc that explains it 
>more?  All the hash elements should be (are) filled when I dereferrence the hash in 
>PACKAGEB.  So why would I ever see 1/8?
> 
> >> Not Split: pass2thing3ptrARRAY(0x6410)user1 :
> >> Array Game: pass 2 thing 3 ptr ARRAY(0x6410) user 1 :
> >>   Player: pass 2 thing 3 ptr ARRAY(0x6410) user 1
> 
> Ok, well, I think I am basically doing this (Not Split)... let me give you a snippet 
>(a very basic one anyway):
> 
> MAIN script:
> use PACKAGEA;
> use PACKAGEB;
> $A=PACKAGEA->new; # OBJ A gathers all url params
> $B=PACKAGEB->new;
> print $B->somesub(&make_hash);
> print $B->{DEBUG};
> exit;
> 
> sub make_hash {
>   my %hash;
>   for('1','2','3','4') {
>     $hash{$_}=$A->params($_);
>   }
>   return(\%hash);
> }
> 
> PACKAGEB:
> ....
> sub somesub {
>   my $self=shift;
>   $self->{DEBUG}.="B::somesub called (line # ".__LINE__.")\n";
>   $self->{SOMEPARAM}=shift;
>   $self->{DEBUG}.="    SOMEPARAM: ".%{$self->{SOMEPARAM}}."\n";
here's the problem: when you try to concatenate the hash to the string
you are evaluating it in scalar context, and that's why it gives you the
number of used buckets

this should work:
$self->{DEBUG}.="    SOMEPARAM: @{[%{$self->{SOMEPARAM}}]}\n";

after you dereference the hash, you populate an anonymous array with it,
and then you dereference the array and interpolate it in the string

its very ugly, but it'll work ;-)
>   ...
> }
> ....
> 
> The data sets get a bit more complex from here, but that is not an issue for me at 
>this point.  I can print out the referenced arrays and strings fine.  It is only the 
>hashes that I am having issues with...
> 
> Again, TIA,
> Shawn
> 
> 
> -- 
> 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