Xavier Noria graced us by uttering:
> Daniel Carrera wrote:
>>   def twice
>>       yield
>>       yield
>>   end
>>   twice { puts "Ruby rocks!" }
> 
> sub twice(&) {
>     my $sub = shift;
>     &$sub;
>     &$sub;
> }
> twice { print "Ruby rocks!\n" }

How about solving that puts() gripe you mentioned:

    sub twice (&) { my $sub = shift; &$sub; &$sub; }
    sub puts      { print "$_\n" for @_ }

    twice { puts "Ruby rocks!" }  # Now in Ruby *AND* Perl!

Ugly, but flexible.  No point condemning a language just because
it doesn't use an entirely different function to tack a newline
onto arguments. Much better to discriminate based on appearances.
;)

Tim Hammerquist
-- 
guru, n: a computer owner who can read the manual.