This is possibly the best answer. I won't give any other. --- drieux <[EMAIL PROTECTED]> wrote: > > On Thursday, Jun 5, 2003, at 13:07 US/Pacific, > Andrew Brosnan wrote: > [..] > >>>> my $hash = {}; > >>>> > >>>> while (my $rows = $response->fetchrow_hashref){ > >>>> $hash->{$rows->{task_ID}} = $rows; > >>>> } > >>> > >>> Why is hash declared as my $hash and not my > %hash? > >>> and how does the > > > > This creates an annonymous hash '{}' and stores a > reference to that > > hash > > in $hash. > > > As for solving - > when to use a reference to a hash, > vice declaring a hash itself. > > Some of it is merely 'art work' - but there is a > useful > practical distinction, is one planning to > pass by 'value' or pass by 'reference' at > any time in the life of the variable. { and/or > all of the future refactorings of the code.... 8-) } > > One can have a large hash, and if you pass it by > value > then you have to put all of the key/value pairs onto > the stack. > While if you passed merely a reference to the hash, > you > will pass merely the singular reference itself. > > > I just hacked something where I was not sure what > the > structure would really need to look like, so opted > to > merely declare > > my $struct; > .... > $struct->{$sname} = "src: $src_file open > error:\n\t $!"; > .... > $struct->{$sname} = "copy of $src_file ok"; > ... > > so technically the code does not WARN the coder that > I plan to use it as a reference to a hash.... but > looking > at the various places where I used it, most perl > coders > would understand that it was merely a hash. > > I also do this sort of trick when I am planning to > do > strange return solutions: > > sub some_funktion > { > .... > return undef unless($condition_one); > .... > > return "that's not right" if $error_case ; > > $hash_ref; > } > > hence I can 'know' a bit about what went on with > > my $got_back = some_funktion(@arglist); > > unless(defined($got_back)) { > # condition_one not met > .... > } > > unless(ref($got_back)) { > # > # that's not right handle the error_case > # > } > > while(my ($k,$v) = each %$got_back)) > { > # > # here we deal with it just like it were a regular > hash > # > } > > > HTH.... > > ciao > drieux > > --- > > > -- > To unsubscribe, e-mail: > [EMAIL PROTECTED] > For additional commands, e-mail: > [EMAIL PROTECTED] >
===== -----BEGIN GEEK CODE BLOCK----- Version: 3.12 GIT d s+:++ a C++ UL++ US+ P+++ L++ W+++ w PS PE t++ b+ G e r+++ z++++ ------END GEEK CODE BLOCK------ __________________________________ Do you Yahoo!? Yahoo! Calendar - Free online calendar with sync to Outlook(TM). http://calendar.yahoo.com -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]