I've usually been lurking, but I have a few thoughts....

> 
> On Thu, 17 Aug 2000, Jonathan Scott Duff wrote:
> 
> > BTW, if we define C<with> to map keys of a hash to named place holders
> > in a curried expression, this might be a good thing:
> > 
> >     with %person {
> >         print "Howdy, ", ^firstname, " ", ^lastname;
> >     }
> > 
> >     # becomes
> >     sub {
> >         print "Howdy, ", $person{$_[0]}, " ", $person{$_[1]};
> >     }->('firstname', 'lastname');
> > 
> >     # becomes
> >     print "Howdy, ", $person{'firstname'}, " ", $person{'lastname'};
> > 
> > (If that's what people meant, I didn't see anyone actually say it).
> 
> 
>       Well, so far, I like this best of everything that's been proposed
> for how "with" will work.  I am still passionately against the keyword
> "with", since (IMHO) it conveys no sense of what it does.  I think any
> of the following keywords would be better:
>               express, alias, in, within 
> 
>       The following words could also be overloaded for this purpose:
>               map, use

"Using" might be an interesting alternative, and it reads well:  "using this 
hash, eval this block."  Of course, with 'with', perl poetry might be
more interesting:
        with %this_ring {
                $i->wed($thee);
        }

:)

> 
>       In any case, if I'm tracking correctly, all of the following
> should be legit using the new syntax (forgive me for trying a new keyword):
> 
>       within %person {
>               &calc_letter_grade(^name, \^letter_grade);
>               print "^first_name is ^age\n"; 
>               print "^{first_name}'s numerical grade is ^num_grade\n"; 
>               ^num_grade = 0 unless ^never_missed_class;
>               if ( ^num_grade > 60 ) { print "^name passed!\n"; }
>               @temp = (^name, ^age);
>       };
> 
> 
>       This would translate to the following: 
>               &calc_letter_grade($person{name}, \$person{letter_grade});
>               print "$person{first_name} is $person{age}\n"; 
>               print "$person{first_name}'s numerical grade is
> $person{num_grade}\n"; 
>               $person{num_grade} = 0 unless $person{never_missed_class};
>               if ( $person{num_grade} > 60 ) { print "$person{name}
> passed!\n"; }
>               @temp = ($person{name}, $person{age});
> 
> 
>                               Dave
> 

What if the hash keys we want to use are not valid scalar names?  For example,
I've had keys like "total - female" as keys, but using the ^ syntax
would fail on this...

Brian Wheeler
[EMAIL PROTECTED]

Reply via email to