0

我在执行此操作时遇到问题:

$contents = do { local $/;  <SEQ> };
$contents =~ "s/\n/ /g";
print $contents;

我想将文件的所有行合并为一个。但是,它不起作用...

知道我的代码发生了什么吗?

谢谢你。

4

3 回答 3

9

删除正则表达式周围的引号

$contents = do { local $/;  <SEQ> };
$contents =~ s/\n/ /g;
print $contents;
于 2013-11-06T20:02:15.670 回答
-1

最简单的方法可能是Perl6::Slurp模块:

use Perl6::Slurp;
$contents = slurp \*SEQ;
于 2013-11-06T20:19:41.980 回答
-2

您可以使用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;
于 2013-11-06T19:56:49.960 回答