Perl:将内容文件转换为标量变量

时间:2013-11-06 19:54:36

标签: perl file scalar

我遇到了这样的问题:

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

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

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

谢谢。

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:-1)

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

use Perl6::Slurp;
$contents = slurp \*SEQ;

答案 2 :(得分:-3)

您可以使用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;