使用perl CGI我试图从具有固定宽度列的文件中读取并将每个列值插入到数组中。 我想每行重新获取文件,然后使用substr提取每一列。 列的数量是固定的,每列的宽度不同,空格总是分开2列,但列值中也使用空格,下面的示例(4列)
this is filed1 field2 this is nextfield3 field4
line2field1 l2field2 field3 and field4 line2
first field second third fourth
问题是,当我读取文件时,多个空格会被一个空格自动替换,请参阅下面的示例
#!/usr/bin/perl
use strict;
use diagnostics;
use warnings;
my $file="example.txt";
open(my $fh, '<:encoding(UTF-8)', $file) or die "Could not open file '$file' $!";
while (my $ll =<$fh>) {
print "<br>line is $ll";
}
close $fh;
这个的输出(假设example.txt是上面的那个)是:
this is filed1 field2 this is nextfield3 field4
line2field1 l2field2 field3 and field4 line2
first field second third fourth
并且这实际上不允许我使用substr来使用已知的固定宽度来操纵字符串。 知道它为什么会发生以及如何读取文件保持字段间的间隔? 我还用文本编辑器打开文件,如记事本++,以确保额外的空间不是由于特殊字符,我可以确认它们只是空格。
答案 0 :(得分:3)
空格仍然存在,但浏览器将它们渲染为一个空格。使用<pre>
完全按输入显示它们。