Hatena::ブログ(Diary)

Islands in the byte stream

2009-12-04

RFC: A new syntax to give a method an extra block

In Shibuya.pm#12, I have proposed a new syntax to Perl, which allows to give a method an extra block like Ruby.

For example:

File->open('<', $file) {
  my($io) = @_;
  $io->grep{ /^foo/ }->each{ say @_ };
};

This is simply interpreted as:

File->open('<', $file, sub{
  my($io) = @_;
  $io->grep(sub { /^foo/ })->each(sub { say @_ });
});

This is only a sugar to the Perl syntax. That is, we need not add any opcode/ppcode to the core. And this syntax is not conflict with the current syntax. Therefore it does not break backward compatibility.

The patch is available on my github space:

What do you think of it?

(I have posted this idea to p5p RFC: New syntax to pass an extra block to a method - nntp.perl.org)

参考:http://d.hatena.ne.jp/gfx/20090914/1252913765