--- Shawn <[EMAIL PROTECTED]> wrote:
> 
> >     #!/usr/bin/perl -w
> >     use strict;
> >     my %test_hash = ( 
> >           one => 'no problem',
> >           two => 'still no problem'
> >     );
> >     print $test_hash{ one }; # prints 'no problem' (without quotes)
> 
> #!/usr/bin/perl -w
> use strict;
> my %test_hash = ( 
>   my one => 'no problem',
>   your two => 'still no problem'
> );
> print $test_hash{ my one }; # prints 'no problem' (without quotes)
> 
> ^^^^^^^^^
> Incorrect

Your "Incorrect" statement is puzzling.  Sure, that code is incorrect, but it's not 
what I posted.

> #!/usr/bin/perl -w
> use strict;
> my %test_hash = ( 
>   'my one' => 'no problem',
>   'your two' => 'still no problem'
> );
> print $test_hash{ 'my one' }; # prints 'no problem' (without quotes)
> 
> ^^^^^^^
> Correct

Shawn,

If you're going to quote me out of context, allow me to point out two things:

1.  It's still not a 'strict' issue as you claimed (the following is edited for 
brevity).

    $ perl -Mstrict -e 'my %test_hash;$test_hash{my one}=3'
    No such class one at -e line 1, near "{my one"

    $ perl -e 'my %test_hash;$test_hash{my one}=3'
    No such class one at -e line 1, near "{my one"

2.  You left out the *critical* portion of my email (emphasis added):

    With the '=>' (a.k.a. 'fat comma'), the left side of the operator
    does no (sic) need to be quoted IF IT DOES NOT CONTAIN WHITESPACE.

> My hashes are generally a bit more descriptive than 'one'...

That's fine.  I was presenting a simplified test case to show the code in question.  
Now here's
some real, live production code from me:

    my %dispatch = (
        Add => {
            Product => {
                page     => 'ps-main-products-add.tmpl',
                function => \&add_product
            },
            Currency => {
                page     => 'ps-main-currency-add.tmpl',
                function => \&add_currency
            },
        },
        Delete => {
            Product => {
                page     => 'ps-main-products-delete.tmpl',
                function => \&delete_product
            },
            Currency => {
                page     => 'ps-main-currency-delete.tmpl',
                function => \&delete_currency
            }
        }
    );

So, when I need to call the "$dispatch{ Add }{ Product }{ function }" (which is set to
\&add_product), I think that's pretty darned descriptive, despite not having any 
whitespace in the
keys.  I've created, in this case, some pretty self-documenting code.  Would *anyone* 
have trouble
figuring out this:

    my $result = $dispatch{ Add }{ Product }{ function }->( $foo, $bar );

Okay, if they're not familiar with references, this may be confusing, but that would 
be a
limitation in the programmer's knowledge, not in my coding style.

Shawn, I mean no offense by any of this.  These could merely be matters of programming 
style, but
the => operator was specifically set up to allow this sort of functionality.  My hash 
is very
clean and easy to read.  If you prefer a different style, *shrug*.

Cheers,
Curtis "Ovid" Poe

=====
"Ovid" on http://www.perlmonks.org/
Someone asked me how to count to 10 in Perl:
push@A,$_ for reverse q.e...q.n.;for(@A){$_=unpack(q|c|,$_);@a=split//;
shift@a;shift@a if $a[$[]eq$[;$_=join q||,@a};print $_,$/for reverse @A

__________________________________________________
Do You Yahoo!?
Check out Yahoo! Shopping and Yahoo! Auctions for all of
your unique holiday gifts! Buy at http://shopping.yahoo.com
or bid at http://auctions.yahoo.com

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

Reply via email to