Nowe posty

Autor Wątek: [Perl] wyciaganie danych z tekstu  (Przeczytany 4932 razy)

Gosik

  • Gość
[Perl] wyciaganie danych z tekstu
« dnia: 2013-03-03, 18:14:22 »
Witajcie!
Mam plik z danymi postaci:


itd.

Chciałabym wyciagnac z tego pliku tylko imie, nazwisko, ulice, nr_domu i nr_lok.

W tym celu probuje napisac skrypt, na poczatku chce wyciagnac tylko imie:
#!/usr/bin/perl

use strict;

open my $fh, '<', 'dane.txt' or die "open: $!";
chomp(my @data1 = <$fh>);
close($fh);


my  @x = grep {
    my $v=$_;
    $v =~ m/imie=.*/;
         
} @data1;

print @x;
Jednakze wyswietla mi wszystkie linie, ktore zawieraja imie.

Probowalam rowniez w taki sposob:

#!/usr/bin/perl

use strict;

my @dane;

open my $fh, '<', 'eksport_sou.xml' or die "open: $!";
chomp(my @data1 = <$fh>);
close($fh);

 my @tab = split/ /;

foreach (@tab){
 my $v =~/imie=.*/;
 push (@dane,$v);
}
 print @dane;
Jednakze w tej sytuacji nic nie jest wyswietlane.

Czy moglabym prosic o wskazowki jak poprawnie to powinnam uczynic?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3066
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
[Perl] wyciaganie danych z tekstu
« Odpowiedź #1 dnia: 2013-03-03, 22:15:33 »
Ale to tenteges wygląda jak XML... Może zatem coś do parsowania XML?
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Gosik

  • Gość
[Perl] wyciaganie danych z tekstu
« Odpowiedź #2 dnia: 2013-03-03, 22:42:05 »
Nie bardzo znam sie na parsowaniu XML i nie wiem czym to sie je.
Jaki jezyk programownai lub rogram nalezy do tego uzyc?

xavery

  • Gość
[Perl] wyciaganie danych z tekstu
« Odpowiedź #3 dnia: 2013-03-05, 13:28:29 »
Język jest moim zdaniem najlepszy z możliwych:) Do parsowania XML jest dużo mniej lub bardziej skomplikowanych modułów. Dla przykładu: XML:Parser, XML::MyXML, XML::Simple (do znalezienia oczywiście na www.cpan.org).
W omawianym przykładzie jednak może być kłopot z integralnością składniową XML. Być może prościej by było przeskanować tekst, przyrównać go do wzorców regularnych i wycinać żądane fragmenty tekstu (zmienna $& po operacji m///)