Skip to content

Instantly share code, notes, and snippets.

@tokuhirom
Created October 6, 2013 09:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tokuhirom/6851517 to your computer and use it in GitHub Desktop.
Save tokuhirom/6851517 to your computer and use it in GitHub Desktop.
hackish でもなんでもなくて、バグってるだけじゃない?
http://hachiojipm.github.io/entry/2013-10-04-warn-die-hack.html
STDERR をキャプチャする hack は hack っぽいし、よいとして。。
my $version = try { ## ここのコードがhackishでよくわからん!!!
open my $fh, '>', \my $stderr;
local *STDERR = $fh;
$self->database_version;
close $fh;
};
このコードで close() の返り値をつかっている理由について考察がなされているが、これは単にバグであろう。
元のコードでは以下のようなコードだったはず。
my $version = try {
open my $fh, '>', \my $stderr;
local *STDERR = $fh;
$self->database_version;
};
なんらかの理由で明示的に close を追加したさいに、なんかへんてこなかんじになってしまっただけだと思われる(debug 時にここに close をはさみたくなることはままあると思う)。
my $version = try { ## ここのコードがhackishでよくわからん!!!
open my $fh, '>', \my $stderr;
local *STDERR = $fh;
my $v = $self->database_version;
close $fh;
$v;
};
本来の意図されていたコードはこうだと思うし、そうじゃないと $version という変数名の意味がわからない。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment