In Perl5, I might write: sub set_date { my ($self, $date) = @_; $date =~ /(\d{4})-(\d{2})-(\d{2})/ or croak "bad date format"; @$self{qw/year month day/} = ($1,$2,$3); }
I could then call: $foo->set_date('2002-09-04') In Perl6 I can write: sub set_date ( $date is rx/<iso_date>/ ) { ($.year, $.month, $.day) = $date{qw/year month day/} } (aside: is this the correct syntax for a Perl6 hashref slice? Could I use %date instead of $date as my match object?) Anyway, ignoring the syntax errors, I think I have some valid Perl6 here. I could now write: $foo.set_date 2002-09-04; But can I use a non-constant date? Perl5: $day = "04"; $foo->set_date("2002-09-$day"); Perl6: $day = "04"; $foo.set_date 2002-09-$day; # ERROR -- doesn't match regex Perl6: $day = "04"; eval "\$foo.set_date 2002-09-$day"; # clunky Obviously we could put the onus on the module writer to write super-flexible rules/grammars. But will there be an easy way to force interpolative context onto this type of regex-valued subroutine arg? Eagerly awaiting A6, Dave. -- Dave Whipp, Senior Verification Engineer, Fast-Chip inc., 950 Kifer Rd, Sunnyvale, CA. 94086 tel: 408 523 8071; http://www.fast-chip.com Opinions my own; statements of fact may be in error.