2013-10-09 3 views
0

У меня есть файл excel с моими данными. Я сохранил его как txt-файл с разделителями табуляции.Преобразование файла excel в txt и открытие в perl

Но если я простой PERL скрипт:

open(IN, '<', 'myfile.txt') or die; 
while (defined(my $line = <IN>)){ 
    print "$line\n"; 
} 
close IN; 

печатает только одну строку, но она содержит все данные - только в одной строке Если я использую другой файл данных, нет никаких проблем , поэтому я думаю, что есть проблема конвертировать файл excel в txt-файл.

Может ли кто-нибудь мне помочь?

+2

Вы задаете '$ /' перед чтением? – geoffspear

+0

Открыть в массив? – fugu

+0

Можете ли вы показать нам входной файл? – fugu

ответ

0

попробуйте while (<IN>) вместо этого. Ваше состояние бьется то время как магия ..

+1

Я не понимаю, что не так с кодом, но моя проблема в том, что он читает весь мой файл как одну строку. – user2335015

+0

Вы уверены, что каждая строка заканчивается на «\ n»? –

0

Я изменил бы петлю на:

while(my $line = <IN>) { ... } 

Там нет необходимости использовать определенный().

+1

Возможно, нет необходимости, но это не имеет значения. Не могли бы вы помочь мне с моей проблемой? – user2335015

0

Я не уверен, ответил ли он еще. Но сначала убедитесь, что вы следующий в вашем коде:

use strict; 
use warnings; 

Это даст вам отладочную помощь, которую вы получили бы в противном случае. Используя вышеизложенное, вы получите больше сообщений, которые могут вам помочь.

Когда я кладу открытую команду в текущей программе я работаю я получил это сообщение отладки:

Name "main::IN" used only once: possible typo at ./test.pl line 37 

Вы также можете использовать дескриптор файл, так Perl может вспомнить, где идти. Это «новый» способ открыть файлы в Perl и объясняется онлайн-perldoc. Просто найдите «Perl file handle open». Я научился делать мой открытый в этом так:

open my $in '<', 'myfile.txt' or die; 

Тогда вы можете просто запустить следующее:

while (my $line = <$in>) { ... } 

Существует лучший способ сделать это, если вы когда-либо были введены в переменную Perl по умолчанию , но я не думаю, что у вас есть так, что вышеупомянутое решение может быть лучшим.

Смежные вопросы