在 perl 中使用文件句柄将 STDIN 写入文件
Writing STDIN to a file using filehandle in perl
我刚开始学习 perl,正在学习文件句柄。
- 我想将我的 STDIN 写入文件。我如何使用文件句柄来做到这一点?
- 是否也可以在不使用 FH 的情况下执行相同的操作?
我尝试了以下方法,但没有成功:
#!/usr/bin/perl
$file = 'File.txt';
open ($fh, '>', $file) or die "Error :$!";
print "Enter blank line to end\n";
while (<STDIN>) {
last if /^$/;
print "FH: $fh \n";
print "dollar: $_ \n";
}
close $fh;*
下面的方法有效,但我不明白为什么。
#!/usr/bin/perl
open(my $fh, '>', 'report.txt');
foreach my $line ( <STDIN> ) {
chomp( $line );
print $fh "$line\n";
}
close $fh;
print "done\n";
您已打开文件句柄 $fh
以写入您的文件。您的第二个示例将数据打印到此文件句柄,因此它有效:
print $fh "$line\n";
但是你的第一个例子没有打印到 $fh
,所以输出到 STDOUT
。
print "FH: $fh \n";
print "dollar: $_ \n";
为了让您的第一个示例正常工作,您需要打印到正确的文件句柄。
print $fh "FH: $fh \n";
print $fh "dollar: $_ \n";
我刚开始学习 perl,正在学习文件句柄。
- 我想将我的 STDIN 写入文件。我如何使用文件句柄来做到这一点?
- 是否也可以在不使用 FH 的情况下执行相同的操作?
我尝试了以下方法,但没有成功:
#!/usr/bin/perl
$file = 'File.txt';
open ($fh, '>', $file) or die "Error :$!";
print "Enter blank line to end\n";
while (<STDIN>) {
last if /^$/;
print "FH: $fh \n";
print "dollar: $_ \n";
}
close $fh;*
下面的方法有效,但我不明白为什么。
#!/usr/bin/perl
open(my $fh, '>', 'report.txt');
foreach my $line ( <STDIN> ) {
chomp( $line );
print $fh "$line\n";
}
close $fh;
print "done\n";
您已打开文件句柄 $fh
以写入您的文件。您的第二个示例将数据打印到此文件句柄,因此它有效:
print $fh "$line\n";
但是你的第一个例子没有打印到 $fh
,所以输出到 STDOUT
。
print "FH: $fh \n";
print "dollar: $_ \n";
为了让您的第一个示例正常工作,您需要打印到正确的文件句柄。
print $fh "FH: $fh \n";
print $fh "dollar: $_ \n";