On a droit au perl ?
Code :
- #!/usr/bin/perl
- use strict;
- use warnings;
- my $id;
- my $output_file;
- my $output;
- while(<> ) {
- if (/<id>(\d+)<\/id>/) {
- $id=$1;
- $output=$_;
- } elsif (/<\/person>/) {
- open $output_file, '>', "person$id.txt" or die("person$id.txt: $!" );
- print $output_file $output;
- close $output_file;
- } elsif (! /^\s+$/) {
- $output.=$_;
- }
- }
|
Usage :
Fonctionne quelque soit le contenu du fichier source (s'il y a 10 lignes pour une personne, ça marche) : ressort tout ce qui est compris entre un <id>xxxx</id> et </person> (</person> non compris) dans un fichier personxxxx.txt
Peut être adapté pour prendre en compte des espaces dans la ligne <id>xxxx</id> si besoin.
edit: ça n'est pas non plus un parser, mais bon, il permet de gérer plusieurs lignes =) et puis j'aime bien perl...
Message édité par lennelei le 21-10-2009 à 17:30:01