我认为这应该是仙女直截了当。我试图将kml文件的内容设置为标量(称为$ kml)。目前它只存储了第一行kml。如何让它忽略换行符并读入整个文件?
我目前有:
$kml = "Scotland_one_inch_1st.kml";
open INPUT, "$kml";
$content = <INPUT>;
close INPUT;
感谢
答案 0 :(得分:4)
使用File :: Slurp模块。
my $text = read_file( 'filename' ) ;
答案 1 :(得分:4)
更改记录输入分隔符$/
:
{
local $/ = undef;
open my $INPUT, $kml or die "Unable to open '$kml': $!";
$content = <$INPUT>;
close $INPUT or die $!;
}
或只使用join
:
open my $INPUT, $kml or die "Unable to open '$kml': $!";
$content = join '', <$INPUT>;
close $INPUT or die $!;
答案 2 :(得分:1)
您可以在脚本中使用开关或设置输入记录分隔符($/
),以便perl会污染整个文件。为方便使用一个衬垫,您可以使用-0
将IRS
设置为(alomst?)任何内容。
通过与-0
一起设置输入记录分隔符,查看perlrun会告诉你有什么蠢事。将-0
设置为777
(-0777
)会使perl整个文件完整,因为没有具有该值的合法字符。
如果您想在脚本中粘贴文件但又不想为整个脚本设置IRS
,那么以下内容将起作用(来自perlvar):
open my $fh, "<", "foo" or die $!;
local $/; # enable localized slurp mode
my $content = <$fh>;
close $fh;
perlvar文档解释了local
对$/
的更改有何益处。