segmentation core dumped - Perl - Programmation
Marsh Posté le 31-03-2017 à 19:08:18
Citation : comment je peux résoudre ce type de problème ?? |
Peut-être en essayant pas de lire tout le fichier d'un coup (ce que my @tab = <$fh1>; fait) mais en faisant la lecture et le traitement ligne par ligne?
D'ailleurs tout tes chomp() à part celui de la ligne 20 ne servent à rien.
Marsh Posté le 31-03-2017 à 19:19:47
Même si j'ai l'impression que le forum (ou disons gilou) fait ton boulot...
CODE SANS GARANTIE etc!
De mémoire toutes les versions de Perl à peu près modernes font du Unicode par défault, je pense qu'il est inutile de spécifier utf8 mais je ne suis pas sûr. gilou?
Code :
|
Marsh Posté le 31-03-2017 à 19:23:37
D'abord Merci pour la réponse !!!!
Même si j'ai l'impression que le forum (ou disons gilou) fait ton boulot...
je poste mes problèmes et gilou ,comme étant expert en perl, m'aide à les résoudre .. comme les autres font je pense.. ceci est l'objectif du forum non ??
Marsh Posté le 31-03-2017 à 19:46:48
mouda a écrit : je poste mes problèmes et gilou ,comme étant expert en perl, m'aide à les résoudre .. comme les autres font je pense.. ceci est l'objectif du forum non ?? |
C'est que - à mon avis - tu postes beaucoup de problèmes et des choses (très) simples qui prouvent que tu devrais faire un effort pour améliorer ton niveau de Perl ou simplement utiliser un moteur de recherche plutôt que de venir poster pour chaque petit truc. M'enfin bon, inutile de passer 3h à discuter là-dessus, chacun est libre de te répondre ou pas finalement...
Marsh Posté le 31-03-2017 à 19:53:02
soit sure que poster est la dernière solution, je sais qu'il existe des moteurs de recherche ... peut etre pour toi se sont des petites trucs...
Dans tous les cas tu peux faire un vue et tu passes, tu n'est pas obligé à me répondre si mes problèmes te dérange..
Marsh Posté le 31-03-2017 à 21:10:59
Si tu enlèves tous les chomp(); ça fait encore coredump?
De toute façon ca pouvait se réécrire
Code : |
A+,
Marsh Posté le 31-03-2017 à 21:40:10
gilou, quel est l'intérêt du chomp() ligne 17 dans ton code? Il ne peut pas y avoir de \n à la fin d'un mot non?
Bonne idée le /\s+/ (et non / +/) pour split, j'ai pas fait gaffe.
Marsh Posté le 31-03-2017 à 22:19:39
Oui, tu as raison ça fait un chomp de trop.
Je peux aussi faire ca sans chomps...
Code : |
A+,
Marsh Posté le 31-03-2017 à 22:35:36
le problème existe toujours, merci pour vos réponses .. je vais réfléchir et chercher encore.
Marsh Posté le 31-03-2017 à 22:36:01
le problème existe toujours, merci pour vos réponses .. je vais réfléchir et chercher encore.
Marsh Posté le 31-03-2017 à 22:46:56
Euh chez moi ça marche (mon dernier post) avec un fichier de lignes de mots arabes (un de tes exemples d'une autre fois)
A+,
Marsh Posté le 31-03-2017 à 22:50:44
gilou a écrit : Euh chez moi ça marche (mon dernier post) avec un fichier de lignes de mots arabes (un de tes exemples d'une autre fois) |
le pblme est du à la grande taille du fichier si nn sur un fichier de petite taille ça marche correctement
Marsh Posté le 31-03-2017 à 22:54:21
Ce pourquoi j'ai fait une lecture ligne a ligne avec un while.
A+,
Marsh Posté le 31-03-2017 à 22:58:08
j'ai déjà testé mais le problème n'est pas résolu, il faut faire un break into chunks et traiter chaque chunk .. ceci permet de résoudre le pblme de memoire
Marsh Posté le 31-03-2017 à 23:55:56
gilou a écrit : Oui, tu as raison ça fait un chomp de trop.
|
Ca c'est intéressant, il n'y a pas besoin de chomp() effectivement dans ce code puisque split(/\s+/, ...) l'enlève c'est bien ça? Je vois aussi que tu as viré les :utf8 pour open, j'avais donc raison que c'est le cas/comportement par défaut?
edit: perl -pne "s/\s+/\n/g;" <ARABICTEXT.txt >ARABICTEXT_2.txt
mouda a écrit : j'ai déjà testé mais le problème n'est pas résolu, il faut faire un break into chunks et traiter chaque chunk .. ceci permet de résoudre le pblme de memoire |
C'est quoi un chunk? J'ai pas testé faute d'un fichier adéquat mais en principe Perl c'est LE language pour faire du traitement de texte et il n'y a pas de limites de taille, en tout cas pas un truc ridicule comme 1,1 Go... (sachant que pour un fichier texte c'est énorme mais pour un fichier tout court non) Tu es sûr que ton problème ne vient pas d'ailleurs? C'est quoi ton code complet?
Marsh Posté le 01-04-2017 à 01:16:49
Hier j'avais un document xml qui une fois sérialisé faisait 76Mo, en mémoire, donc plusieurs fois plus gros, manipulé en perl avec LibXML, sans pb.
A+,
Marsh Posté le 01-04-2017 à 02:28:07
@gilou:
Citation : un fichier de taille 1,1 Go |
(à moins que ce soit une faute de frappe?)
Marsh Posté le 01-04-2017 à 10:33:04
Je le pense aussi, parce que la, 96Mo, c'est la taille d'une grosse encyclo juridique avec pas mal de volumes.
A+,
Marsh Posté le 01-04-2017 à 19:17:30
ce n'est pas une faute de frappe c'est 1,1 Go (1 054 608 425 octets) (un fichier texte), je pense que c'est un pblme du taille parce que le code marche très bien pour un fichier de petite taille.
Marsh Posté le 02-04-2017 à 15:19:21
S'il y a toujours cela dans votre code: my @tab = <$fh1>;
c'est sur que ca posera probleme pour une grande taille.
Mais comme il y a aucune raison de transformer un fichier en array...
A+,
Marsh Posté le 31-03-2017 à 16:27:37
Pour un script perl permettant de segmenter une texte en mot , pour un fichier de taille 1,1 Go , j'ai obtenu l'erreur suivante :
panic: POPSTACK
Erreur de segmentation (core dumped)
le code est le suivant :