#perl
#perl
Вопрос:
Я не могу открыть файл большого формата EMS с помощью Perl OPEN. Но, когда то же содержимое вручную копируется в блокнот, открывается тот, что в блокноте. Я не хочу копировать вручную, пожалуйста, сообщите мне, как я могу открыть файл с типом файла 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;
Комментарии:
1. Можете ли вы показать, как вы используете open? Сложнее отвечать на вопросы о языках программирования, не видя никакого кода.
2. Открытие работает со всеми текстовыми файлами, за исключением этого конкретного типа файлов
3. «Невозможно открыть» Что это значит? Вы получаете сообщение, что это?
4. Не удается открыть файл: нет такого файла или каталога в test.pl … также указывается номер строки, в которой присутствует Open statment….
5. Вы уверены, что не опечатали «Журналы»? Разве это не должно быть «Журналами»?
Ответ №1:
Формат EMS не является простым блоком текста. Существуют различные форматы файлов, такие как DOC, DOCX, EMS. Вы можете открыть все эти файлы с помощью стандартных утилит, таких как Notepad и Wordpad. Однако то, что вы видите отображаемый текст, не означает, что это единственные данные внутри этих файлов. Что делает файл DOC файлом DOC? Существует стандартная спецификация, которая описывает формат файла, например, данные заголовка (как вы сообщаете ОС, что это файл DOC?) и где хранятся данные (где вы храните количество страниц, используемые шрифты, фактический текст?).
Файл EMS также похож на этот. У меня нет опыта или простой спецификации формата EMS, но, возможно, вы можете использовать http://perldoc.perl.org/functions/binmode.html чтобы открыть файл и прочитать данные в байтах, а затем выполнить поиск нужной текстовой информации. Это обратное проектирование для вас.
Комментарии:
1. Спасибо, Евгений. Я попробую.