我在Mac上编写了一个简单的perl脚本,它在单独的行中将一堆单词打印出来并打印出来:
#!/usr/bin/perl -w
use strict;
select STDERR; $| = 1;
select STDOUT; $| = 1; # auto flushing
my %count;
print "Please type in a series of words in seperate lines and ends with Ctrl+D.\n";
chomp(my @series = <STDIN>);
# print "\n";
foreach my $name (@series){`
print "$name\n";
}
这是输入:
a
a
b
(ctrl+D)
我注意到完成输入后按ctrl + D,我在终端看到了这个:
aD
a
b
我之所以认为是因为终端也在没有&#34; \ n&#34;当我的程序正在打印出输入时,它会在我看到的^上留下一个d(你可以通过取消注释打印&#34; \ n&#34;在第8行来检查这一点)所以我想我是什么&#39;问我应该怎么做才能阻止终端回应^ D?
答案 0 :(得分:1)
一种简单的方法是使用stty
暂时关闭该功能。在命令行上
stty -echoctl
关闭,
stty echoctl
开启。如果您对这些内容进行system
调用,则会从您的脚本中执行调用。这是一个例子:
#!/usr/bin/env perl
use strict;
select STDERR; $| = 1;
select STDOUT; $| = 1; # auto flushing
system("stty -echoctl");
my %count;
print "Please type in a series of words in separate lines and ends with Ctrl+D.\n";
chomp(my @series = <STDIN> );
print "\n";
foreach my $name (@series){
print "$name\n";
}
system("stty echoctl");
1;