>>>>> "Damian" == Damian Conway <[EMAIL PROTECTED]> writes:
Too much typing: Damian> module PAIR; Damian> method car { return .key } Damian> method cdr { return .value } Damian> method AUTOVIVIFY (&default, $name) { Damian> if ($name =~ m/^c([ad])([ad]*)r$/) { Replace: Damian> my $next = "c$2r"; Damian> given ($1) { Damian> when 'a': { return sub { .car.$next() } } Damian> when 'd': { return sub { .cdr.$next() } } Damian> } with: my $this = "c$1r"; my $next = "c$2r"; return sub { { .$this().$next() } }; Damian> } Damian> } Right? Plus or minus a set of parens or something, eh? -- Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095 <[EMAIL PROTECTED]> <URL:http://www.stonehenge.com/merlyn/> Perl/Unix/security consulting, Technical writing, Comedy, etc. etc. See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!