#!/usr/local/bin/perl use strict; use warnings; print q[ echo hoge echo moe ];
#!/usr/local/bin/perl -l use strict; use warnings; my @line = <STDIN>; print @line; warn "OK? [y/N]"; my $ret = <STDIN>; unless ($ret =~ m/^y/i) { die; } print $ret;
こういうスクリプトが二つあって、以下のように実行した場合に、 [y/N] を尋ねるプロンプトが出て処理が止まって欲しい。
$ ./out.pl | ./stdin.pl
結果はこうなる
$ ./out.pl | ./stdin.pl echo hoge echo moe OK? [y/N] at ./stdin.pl line 7, <STDIN> line 3. Use of uninitialized value in pattern match (m//) at ./stdin.pl line 9, <STDIN> line 3. Died at ./stdin.pl line 10, <STDIN> line 3.
なんか無理そうな気がしてきたな・・・。 seek STDIN 0,0 とか入れてみたけど変わらず。
追記
hiboma close STDIN; open STDIN, '<', '/dev/tty'; するとか // 正しい作法かどうかは謎です
http://b.hatena.ne.jp/hiboma/20090216#bookmark-12150302
の通りにやってみたら出来ました。ありがとうございます。 /dev/tty をオープンするとか、思いつかなかった。 /dev/なんちゃら、とかがあまりよくわかってない。