« Japanize インストール済の Safari で apple.com/downloads にアクセスすると落ちる件 | メイン | swifty - 高速な共有メモリキャッシュ »

2007年07月18日

Perl の正規表現が破壊的でイヤだなと思った件

 いちいち変数定義して、

my $s = "Hello, World\n";
$s =~ s/Hello/Goodbye/;
print $s;

とか書くのにあきてきたので、

sub ndes (&@) {
    my $code = shift;
    my @a = map {
        local $_ = $_;
        $code->();
        $_;
    } @_;
    wantarray ? @a : $a[0];
}

と、まとめてみました。これで、

print ndes { s/Hello/Goodbye/ } "Hello, World\n"

とするだけで「Goodbye, World」が表示されるように。でもとっても再発明 (あるいは遠回り) のにおいがします。どうすれば、より better なんでしょうか。

投稿者 kazuho : 2007年07月18日 17:30 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

トラックバック

このエントリーのトラックバックURL:
http://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/1403

このリストは、次のエントリーを参照しています: Perl の正規表現が破壊的でイヤだなと思った件:

» Kazuho@Cybozu Labs: Perl の正規表現が破壊的でイヤだなと思った件 from これはすごい
 いちいち変数定義して、 my $s = "Hello, World\n"; $s =~ s/Hello/Goodbye/; print $s; とか書く... [続きを読む]

トラックバック時刻: 2007年07月18日 21:08

コメント

List::MoreUtilsのapplyでもいけます

投稿者 kazeburo : 2007年07月18日 18:09

おぉ。助かります。オレオレライブラリを回避することができました。

投稿者 kazuho : 2007年07月19日 03:25