读取具有固定大小列的文件

时间:2018-01-17 10:24:38

标签: perl cgi

使用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来使用已知的固定宽度来操纵字符串。 知道它为什么会发生以及如何读取文件保持字段间的间隔? 我还用文本编辑器打开文件,如记事本++,以确保额外的空间不是由于特殊字符,我可以确认它们只是空格。

1 个答案:

答案 0 :(得分:3)

空格仍然存在,但浏览器将它们渲染为一个空格。使用<pre>完全按输入显示它们。