Perl 要将控制台中的打印作为输出吗

Perl 要将控制台中的打印作为输出吗,perl,Perl,这是我的示例代码,我想在控制台中打印报告作为输出,我尝试了太多次,但我无法做到这一点,新手 #!/usr/local/bin/perl # for loop execution $b=0; for( $a = 0; $a < 5; $a = $a + 1 ) { print "Enter your name please" ; my $name = <STDIN>; chomp $name; open(my $name, '>', 'repor

这是我的示例代码,我想在控制台中打印报告作为输出,我尝试了太多次,但我无法做到这一点,新手

#!/usr/local/bin/perl

# for loop execution
$b=0;
for( $a = 0; $a < 5; $a = $a + 1 ) {

   print "Enter your name please" ;
   my $name = <STDIN>;
   chomp $name;
   open(my $name, '>', 'report.txt');
   close $name;

}
#/usr/local/bin/perl
#for循环执行
$b=0;
对于($a=0;$a<5;$a=$a+1){
打印“请输入您的姓名”;
我的$name=;
chomp$name;
打开(我的$name,“>”,“report.txt”);
关闭$name;
}
my$qfn='report.txt';

open(my$fh,“我想OP要求将控制台输出打印到报告中

#!/usr/local/bin/perl
# for loop execution
$b=0;现在这是不需要的标量变量声明

   for( $a = 0; $a < 5; $a = $a + 1 ) { # You can use $a++ here instead of $a = $a + 1 ;
   print "Enter your name please" ;
   my $name = <STDIN>;
   chomp $name; #You will check the filehandling I/O.
   open($filename, '>>', 'report.txt'); #You need to append the values into the report
   print $filename "$name\n";
   close $filename;
}
for($a=0;$a<5;$a=$a+1){#您可以在这里使用$a++而不是$a=$a+1;
打印“请输入您的姓名”;
我的$name=;
chomp$name;#您将检查文件处理I/O。
打开($filename,'>>,'report.txt');#您需要将值附加到报告中
打印$filename“$name\n”;
关闭$filename;
}

试试这个。

根据您从
STDIN
读取并输出到report.txt文件的提供代码判断

#!/usr/local/bin/perl

use strict;
use warnings;

my $report = 'report.txt';
my $a = 5;

open(my $fh, '>', $report)
    or die "Couldn't open $report";

while( $a-- ){
    print "Enter your name please: " ;
    my $name = <STDIN>;
    chomp $name;

    say $fh $name;

}

close $fh;
!/usr/local/bin/perl
严格使用;
使用警告;
my$report='report.txt';
我的$a=5;
打开(我的$fh,“>”,$report)
或死亡“无法打开$report”;
而($a--){
打印“请输入您的姓名:”;
我的$name=;
chomp$name;
说出$fh$名称;
}
收盘价$fh;

注意:您的脚本包括
shebang
什么指示您使用Linux/UNIX

如果OP希望在
tee
Linux/UNIX command.manpage提供的perl功能中实现,此答案适用于这种情况

在使用脚本之前,应使其可执行
chmod+x script.pl

该命令将继续打印到终端中,并将相同的输出保存到带有提供的文件名的文件中,或者保存到默认文件report.txt中

用法:
command | script.pl[文件名]

注意:旧文件被覆盖

#!/usr/local/bin/perl

use strict;
use warnings;

use feature 'say';

my $report = shift || 'report.txt';

open(my $fh, '>', $report)
    or die "Couldn't open $report";

while( <> ){
    say;
    say $fh $_;
}

close $fh;
!/usr/local/bin/perl
严格使用;
使用警告;
使用特征“说”;
我的$report=shift | |'report.txt';
打开(我的$fh,“>”,$report)
或死亡“无法打开$report”;
而(){
说,;
比如$fh$;
}
收盘价$fh;

Q:如果要打印到控制台,为什么要重定向到“report.txt”??Q:report.txt看起来还好吗?它是否包含您在报告中期望的内容?您想在控制台中读取一些数据并将其存储在文件中吗?还是想读取文件内容并在控制台中打印?@北极熊,我回答了问题,但完全有可能这不是OP真正想要的。如果他们编辑他们的问题,使我的答案为no不再相关,我将删除它。在那之前,OP可能需要4或5件事,我不会为每件事都发布答案。简言之,我认为我会开始行动。考虑到这一点,我认为这不应该得到回答。保持
,但将
打开
移出循环会带来更多问题毫无疑问,你是对的,冠军。我只是复制了OP的代码并进行了更新。
   for( $a = 0; $a < 5; $a = $a + 1 ) { # You can use $a++ here instead of $a = $a + 1 ;
   print "Enter your name please" ;
   my $name = <STDIN>;
   chomp $name; #You will check the filehandling I/O.
   open($filename, '>>', 'report.txt'); #You need to append the values into the report
   print $filename "$name\n";
   close $filename;
}
#!/usr/local/bin/perl

use strict;
use warnings;

my $report = 'report.txt';
my $a = 5;

open(my $fh, '>', $report)
    or die "Couldn't open $report";

while( $a-- ){
    print "Enter your name please: " ;
    my $name = <STDIN>;
    chomp $name;

    say $fh $name;

}

close $fh;
#!/usr/local/bin/perl

use strict;
use warnings;

use feature 'say';

my $report = shift || 'report.txt';

open(my $fh, '>', $report)
    or die "Couldn't open $report";

while( <> ){
    say;
    say $fh $_;
}

close $fh;