2013-10-09 3 views
0

J'ai un fichier Excel avec mes données. Je l'ai enregistré comme un fichier txt délimité par des tabulations.Convertir un fichier Excel en txt et ouvrir en perl

Mais si je fais un script Perl simple:

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

il imprime seulement sur une ligne, mais il contient toutes les données - juste une ligne Si j'utilise un autre fichier de données, il n'y a aucun problème , donc je pense qu'il y a un problème convertir le fichier Excel en un fichier txt.

Quelqu'un peut-il m'aider?

+2

Vous définissez '$ /' avant de le lire? – geoffspear

+0

Ouvrir dans un tableau? – fugu

+0

Pouvez-vous nous montrer le fichier d'entrée? – fugu

Répondre

0

essayez plutôt while (<IN>). Votre état bat la magie while ..

+1

Je ne comprends pas ce qui ne va pas avec le code, mais mon problème est qu'il lit tout mon fichier en une ligne - – user2335015

+0

Etes-vous sûr que chaque ligne se termine par un "\ n"? –

0

Je changerais la boucle:

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

Il n'y a pas besoin d'utiliser defined().

+1

Peut-être qu'il n'y a pas besoin, mais cela ne fait pas de différence. Pouvez-vous s'il vous plaît m'aider avec mon problème? – user2335015

0

Je ne sais pas si j'ai déjà répondu à cette question. Mais, assurez-vous que vous avez les éléments suivants dans votre code:

use strict; 
use warnings; 

Cela vous donnera l'aide de débogage que vous recevriez autrement. L'utilisation de ce qui précède vous donnera plus de messages qui peuvent aider.

Quand je mets votre commande d'ouverture dans un programme en cours, je travaille sur j'ai reçu ce message de débogage:

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

Vous pouvez également utiliser un descripteur de fichier si Perl peut se rappeler où aller. C'est la "nouvelle" façon d'ouvrir les fichiers en Perl et est expliqué sur le perldoc en ligne. Il suffit de rechercher "handle de fichier perl ouvert." J'ai appris à faire mon cette façon Open:

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

Ensuite, vous pouvez simplement exécuter la commande suivante:

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

Il y a une meilleure façon de le faire si jamais vous avez été introduit à la variable par défaut de Perl , pourtant je ne pense pas que vous avez ainsi la solution ci-dessus peut être le meilleur.

Questions connexes