无法使用Perl open打开EMS文件类型-但在将内容复制到记事本时打开



我无法使用Perl open打开大型EMS格式文件。但是,当将相同的内容手动复制到记事本时,记事本中的内容将打开。我不想做手工拷贝,请告诉我如何用EMS文件类型打开文件

这是我正在使用的代码,它与。txt文件一起工作,但不是。ems文件。

#!/usr/bin/perl
use strict;
use warnings;
# open a filehandle to data.txt
open( IN, "C:\Users\test\Documents\lOGS\Testinghourly.txt" ) || die('cannot open file: ' . $!);
my @Required = ( 28, 385, 38, 708, 722, 379, 380, 32, 76, 388, 389, 62, 739, 319, 83 );
for ( 1 .. 2 ) {
    <IN>;
}
while ( my $line = <IN> ) {
    my @fields = split( /:/, $line );
    for ( $count = 0 ; $count <= 15 ; $count++ ) {
        if ( $fields[0] == $Required[$count] ) {
            print $line;
        }
    }
}
# close the filehandle and exit
close(IN);
exit;

EMS格式不是一个简单的文本块。存在DOC、DOCX、EMS等不同的文件格式。您可以使用记事本和写字板等标准实用程序打开所有这些文件。但是,仅仅因为看到了显示的文本,并不意味着这些文件中只有文本数据。是什么让DOC文件成为DOC文件?有一个描述文件格式的标准规范,例如头数据(如何告诉操作系统这是一个DOC文件?)和数据存储位置(在哪里存储页数、使用的字体和实际文本?)。

EMS文件也是这样。我没有关于EMS格式的经验或简单的规范表,但是也许您可以使用http://perldoc.perl.org/functions/binmode.html打开文件并以字节为单位读取数据,然后搜索您想要的文本信息。这就是逆向工程

最新更新