我的情况是这样的:while循环将检查STDIN,一旦我输入一行包含一个关键词" win",level0子程序将显示"哈哈哈我赢了!\ n&# 34 ;.现在我想重新定位印刷的"哈哈哈我赢了\ n"到一个名为$ result的变量,而不是在屏幕上显示它,并chomp()它,然后在屏幕上显示修改后的信息。
我的预期显示: "哈哈哈,我赢了!结果已被重定向"
sub level0 {
print "hahaha I win!\n";
}
sub level1 {
level0();
}
sub check {
my ($word) = @_;
if ($word =~ /win/) {
level1($word);
}
}
while (<>) {
($line) = $_;
$result = check($line);
chomp($result);
print "$result, the result has been redirected\n";
}
答案 0 :(得分:5)
我不确定这是你应该做的事情,这通常是一个坏主意,因为你不能总是确定你所呼唤的一切的副作用。
但无论如何,如果必须,下面的内容应该有效。
while (my $line = <>) {
my $result = '';
open RESULT, '>', \$result or die $!;
select RESULT;
check($line);
select STDOUT;
chomp($result);
print "$result, the result has been redirected\n";
}
看到更多选项