タグ

perlとevalに関するwkbyshnbtkのブックマーク (2)

  • perl,javascript and more - evalは最後の武器 : 404 Blog Not Found

    2009年02月08日01:00 カテゴリLightweight Languages perl,javascript and more - evalは最後の武器 うーん、そうなのだけど.... メタプログラミングとは - Perl入門〜サンプルコードによるPerl入門〜 メタプログラミングとはソースコードを生成するプログラミングのことです。メタプログラミングによって生成したソースコードは、eval関数で実行することができます。 evalだけがメタプログラミングの技法ではないし、またevalはその威力ゆえ最後の選択肢とすべきだ。 #!/usr/local/bin/perl use strict; use warnings; use Benchmark qw/timethese cmpthese/; cmpthese( timethese( 0, { eval => sub { no warn

    perl,javascript and more - evalは最後の武器 : 404 Blog Not Found
  • $@はグローバル変数

    あまり意識されていませんが、$@はグローバル変数です。気をつけないとおかしなことになります。以下のコードではdie()で例外を発生させているので「Error is Dummy error」と表示されるように見えますが、表示されません。 package Hoge; sub new { bless {}, shift } sub cleanup { # 色々処理 } sub DESTROY { my $self = shift; eval { $self->cleanup }; } package main; eval { my $hoge = Hoge->new(); die "Dummy error"; }; if ($@) { print "Error is $@\n"; } else { print "Everything OK!\n"; } evalがdie()によって終了し、スコー

    wkbyshnbtk
    wkbyshnbtk 2008/12/30
    $@をlocal化するのが吉
  • 1