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]