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

Perl 读取具有固定大小列的文件,perl,cgi,Perl,Cgi,使用perl CGI,我试图从一个具有固定宽度列的文件中读取数据,并将每个列的值插入到一个数组中。 我想每行重新读取文件,然后使用substr提取每列。 列数是固定的,每列有不同的宽度,空格总是分隔两列,但在列值内也使用空格,下面的示例(4列) 问题是,当我读取文件时,多个空间会自动替换为单个空间,请参见下面的示例 #!/usr/bin/perl use strict; use diagnostics; use warnings; my $file="example.txt"; open(my

使用perl CGI,我试图从一个具有固定宽度列的文件中读取数据,并将每个列的值插入到一个数组中。 我想每行重新读取文件,然后使用substr提取每列。 列数是固定的,每列有不同的宽度,空格总是分隔两列,但在列值内也使用空格,下面的示例(4列)

问题是,当我读取文件时,多个空间会自动替换为单个空间,请参见下面的示例

#!/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;
这实际上不允许我使用substr使用已知的固定宽度来操纵字符串。 知道为什么会发生这种情况吗?我如何读取文件,保持字段之间的额外间隔?
我还使用文本编辑器(如记事本+)打开了该文件,以确保额外的空间不是由于特殊字符造成的,我可以确认它们只是空白。

这些空间仍然存在,但浏览器会将它们呈现为一个空间。使用
将它们完全显示在输入中。

当在/1.pl第5行使用“strict subs”时,不允许使用单字“example”。在./1.pl第5行使用“strict subs”时,不允许使用裸字“txt”。
#!/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;
this is filed1 field2 this is nextfield3 field4
line2field1 l2field2 field3 and field4 line2
first field second third fourth