OVH Cloud OVH Cloud

retourner une chaine de caractere d'apres une position.

2 réponses
Avatar
Dom
Bonjour,

Plus que débutant en Perl, malgré des recherches sur le Net, celles-ci
demeurent sans résultat.

Je cherche a récupérer une chaine de caractère contenu dans un fichier,
sachant que je passe 3 argument :
- Le nom du fichier (bien sur)
- La position a partir de laquelle rechercher la chaine
- Le nombre de caractere a retourner


Imaginons le fichier suivant :

chat.txt
------------------------
Chaque animal domestique a une particularité. Le chat de Van a une fourrure
blanche de soie, les yeux de couleur différente, un sens parfait de la
chasse et le grand plaisir consistant à jouer avec de l'eau.
Les premiers fossiles des chats domestiques datent de 12 million d'années
Les chats sont probablement domestiqués par les Egyptiens dans le troisième
millénaire avant Jésus-Christ. Les chats domestiqués étaient considérés
comme étant sacrés, et traités comme des déesses par les Egyptiens. Il y a
plusieurs points de vue controversés en ce qui concerne la domestication
dans plusieurs endroits et au temps différent. Mais il est établi avec
certitude que le peuple asiatique a entrepris la domestication du chat
aussi. D'autre part, le chat aurait été semi-domestiqué dans les années 1900
avant Jésus-Christ, selon certaines sources.
--------------------------------

si je lance la commande :

trouver_chaine chat.txt 14 10

La commande doit me retourner : domestique



Merci par avance de votre aide.

2 réponses

Avatar
Denis Dordoigne
Bonjour,

Pourrais-tu indiquer un morceau de code que tu as déjà réussi à faire
même s'il ne marche pas ? Parce que si on te donne le code tout fait, tu
n'auras rien appris...

Bonne chance,

--
Denis

P.S.: tu donnes franchement l'impression de donner à faire tes devoirs.
Avatar
Jacques Caron
Salut,

On Mon, 27 Feb 2006 16:41:21 +0100, Dom wrote:

Plus que débutant en Perl, malgré des recherches sur le Net, celles-ci
demeurent sans résultat.

Je cherche a récupérer une chaine de caractère contenu dans un fichier,
sachant que je passe 3 argument :
- Le nom du fichier (bien sur)
- La position a partir de laquelle rechercher la chaine
- Le nombre de caractere a retourner


Imaginons le fichier suivant :

chat.txt
------------------------
Chaque animal domestique a une particularité. Le chat de Van a une
fourrure
[...]


si je lance la commande :

trouver_chaine chat.txt 14 10

La commande doit me retourner : domestique


Au hasard (pas optimal, mais court):

#!/usr/local/bin/perl -w

use strict;
my $file = `cat $ARGV[0]`;
print substr($file,$ARGV[1]-1,$ARGV[2])."n";

(évidemment il faudrait rajouter la gestion d'erreurs).

Plus "propre" (i.e. sans forker tout plein de trucs pour faire un cat), un
petit:

my $fname = $ARGV[0];
my $size = -s $fname;
my $file;
open my $fh,$fname;
read $fh,$file,$size;
close $fh;
print substr($file,$ARGV[1]-1,$ARGV[2])."n";

Pas testé du tout, mais bon, faut te laisser un peu de travail...

Jacques.
--
Oxado http://www.oxado.com/