Symbol::gensym

| コメント(4) | トラックバック(0)

perlでSymbol::gensymってのがあるのを知らなかった。
どうやら、ファイルを開くときなどに無名ハンドルを作りたいときなどに使用するようだ。
使い方は下記のような感じです。

foreach $filename (@names) {
    use Symbol;
    my $fh = gensym();
    open($fh, "/etc/$filename") || die "open /etc/$filename: $!";
    $file{$filename} = [ $i++, $fh ];
}

これで、多分使うとしたら、

print $file{foo}->[0] "example text";

とかで扱うのかな。
なるほど、今度使ってみよう。

トラックバック(0)

トラックバックURL: http://blog.clouder.jp/mt/mt-tb.cgi/239

コメント(4)

mod_perl 上で使うなら、Apache->gensym() のほうが Symbol::gensym よりオーバーヘッドが少なくていいです。
ついでに IO::File のようなインターフェースで使いたい場合は、Apache::File が、IO::File よりオーバーヘッドが少ないという話。

ほうほう
φ(.. )

5.8 とかだと、
open my $fh, '/path/to/file';
で、$fh にグロブリファレンスがはいるようになったから、Symbol::gensym とかあまり使わなくなったね。

なぬ。あまり使わないのでつか。
まぁ、たしかに↑の書き方ができれば必要ないですねぇ。

コメントする

検索

広告

月別 アーカイブ

OpenID対応しています OpenIDについて
Powered by Movable Type 5.12