Perlについての質問箱 48箱目

このエントリーをはてなブックマークに追加
327デフォルトの名無しさん
10年前に書かれたまま、更新してないとかじゃねーの。

例えば、
>local *CATCHOUT = IO::File->new_tmpfile;
>local *CATCHERR = IO::File->new_tmpfile;
>my $pid = open3(gensym, ">&CATCHOUT", ">&CATCHERR", "cmd");

IO::File->new_tmpfile が「ファイルハンドルを返すもの」と理解してれば、
今の時代にこんな書き方はしない。

se IPC::Open3;
use IO::File ;
use Symbol qw(gensym) ;
my @cmd = qw( ls ) ;
my $tmpout = IO::File->new_tmpfile;
my $tmperr = IO::File->new_tmpfile;
my $pid = open3 gensym, $tmpout, $tmperr, @cmd ;
waitpid $pid, 0 ;
print while <$tmpout>;

328デフォルトの名無しさん:2011/09/12(月) 12:55:44.21
>>327
それだと">&"の処理に困らない?
329デフォルトの名無しさん:2011/09/12(月) 17:36:39.36
配列にある要素があれば1、なければ0を返すコードはどのように書けばよいでしょうか?
330デフォルトの名無しさん:2011/09/12(月) 17:38:41.94
grep {$foo == $_} @ARRAY
331デフォルトの名無しさん:2011/09/12(月) 18:43:59.98
332デフォルトの名無しさん:2011/09/12(月) 23:43:15.08
>>330
{$foo == $_} より {$foo eq $_} の方がいいかも
ケースバイケースだろうけど

List::MoreUtils の any も試してみたら
grepの10倍遅かったw
333デフォルトの名無しさん:2011/09/13(火) 23:44:12.38
>>327
> 今の時代にこんな書き方はしない。

今の時代に合わない、ネットの書き込みを
全部排除してくれ。

世の中モダンPerlだけでいい。