我在执行此操作时遇到问题:
$contents = do { local $/; <SEQ> };
$contents =~ "s/\n/ /g";
print $contents;
我想将文件的所有行合并为一个。但是,它不起作用...
知道我的代码发生了什么吗?
谢谢你。
删除正则表达式周围的引号
$contents = do { local $/; <SEQ> };
$contents =~ s/\n/ /g;
print $contents;
最简单的方法可能是Perl6::Slurp模块:
use Perl6::Slurp;
$contents = slurp \*SEQ;
您可以使用File::Slurp模块:
use File::Slurp qw/read_file/;
my $text = read_file( 'filename' ) ;
$text =~ s/\n/ /g;
print $text;
如果您不想使用该模块,可以尝试以下操作:
#!/usr/bin/perl
use strict;
use warnings;
my $text;
open my $fh, "<", "./alarm.pl" or die $!;
{
local $/; # enable localized slurp mode
$text = <$fh>;
}
close $fh;
$text =~ s/\n/ /g;
print $text;