我无法使用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\\Testing\hourly.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;
答案 0 :(得分:0)
EMS格式不是简单的文本块。存在不同的文件格式,例如DOC,DOCX,EMS。您可以使用标准实用程序(如记事本和写字板)打开所有这些实用程序。但是,仅仅因为您看到文本显示,并不意味着这是这些文件中唯一的数据。什么使DOC文件成为DOC文件?有一个描述文件格式的标准规范,例如标题数据(如何告诉操作系统它是一个DOC文件?)以及存储数据的位置(在哪里存储页面数,使用的字体,实际的文字?)。
EMS文件也是这样的。我没有关于EMS格式的经验或简单规格表,但也许您可以使用http://perldoc.perl.org/functions/binmode.html打开文件并以字节为单位读取数据,然后搜索所需的文本信息。那是你的逆向工程。