最近Term::Readline
を使い始めましたが、今はcat text | ./script.pl
が動作しない(出力なし)ことを実現しました。方法:cat text | ./script.pl
script.plは(作業OK)の前にスニペット:
#!/usr/bin/perl
use strict;
use warnings;
$| = 1;
while (<>) {
print $_;
}
script.plは(のみ対話的に取り組んで)後スニペット:
#!/usr/bin/perl
use strict;
use warnings;
use Term::ReadLine
$| = 1;
my $term = Term::ReadLine->new('name');
my $input;
while (defined ($input = $term->readline(''))) {
print $input;
}
は、私は(この動作を維持するために何かできることはありますラインを印刷する)?
STDINから読みたい場合は、STDINから読み込む必要があります。あなたは '$ interactive =!@ARGV && -t STDIN;'の振る舞いに基づいている可能性があります。 – ikegami
あなたの質問のタイトルにCatの役に立たない使用の古典的な例。 https://en.wikipedia.org/wiki/Cat_%28Unix%29#Useless_use_of_cat – jira
を参照してください。どこから読みたいのかを決めなければなりません: 'readline'を使うと、常に*/dev/tty * 。 '<>'または標準入力を使用する場合は、そうでないかもしれません。 – tchrist