Leser: 20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#
Achtnich, Martin Dr.med.
Gustav-Seitz-Str. 4 68163 Mannheim (0621) 24775
Ärzte: Internist Mannheim
1 Bewertungen
* Stadtplan
* Kostenlos anrufen!
jetzt eintragen!
#
Brand Bernhard Dr.med. u., Jakobs Christian Dr.med.
Waldstr. 143 68305 Mannheim (0621) 752034
Ärzte: Internist Mannheim
1 Bewertungen
* Stadtplan
* Kostenlos anrufen!
jetzt eintragen!
#
Dangl, Stefan Dr. med.
Grohbergstr. 9 68309 Mannheim (0621) 736800
Ärzte: Internist Mannheim
1 Bewertungen
* Stadtplan
* Kostenlos anrufen!
jetzt eintragen!
Name, Vorname | Straße | Plz | Ort | Telefon
1 2 3 4 5 6 7 8 9 10
open my $fh, "<", "adressen.txt" or die $!; local $/ = "jetzt eintragen!\n"; # als paragraphentrenner betrachten chomp(my @p = <$fh>); for my $paragraph (@p) { my (undef, $name, $address) = split /\n/, $paragraph; my ($street, $city, $phone) = split / (?=\d{5} |\(\d{3,5}\) )/, $address, 3; print "$name | $street | $city | $phone\n" }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my @table; local $/='#'; while(<DATA>) { push(@table,[$1,$2,$3,$4,$5,$6]) if($_=~/^\s*([^,]+?)\s*,\s*([^,]+?)\n([^\s]+(?:\s+\d+)?)\s+(\d+)\s+(.+?)\s+(\(\d+\)\s+\d+)\n/s); } print Dumper(\@table); __DATA__ # Achtnich, Martin Dr.med. Gustav-Seitz-Str. 4 68163 Mannheim (0621) 24775 Ärzte: Internist Mannheim 1 Bewertungen * Stadtplan * Kostenlos anrufen! jetzt eintragen! # Brand Bernhard Dr.med. u., Jakobs Christian Dr.med. Waldstr. 143 68305 Mannheim (0621) 752034 Ärzte: Internist Mannheim 1 Bewertungen * Stadtplan * Kostenlos anrufen! jetzt eintragen! # Dangl, Stefan Dr. med. Grohbergstr. 9 68309 Mannheim (0621) 736800 Ärzte: Internist Mannheim 1 Bewertungen * Stadtplan * Kostenlos anrufen! jetzt eintragen!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$VAR1 = [
[
'Achtnich',
'Martin Dr.med.',
'Gustav-Seitz-Str. 4',
'68163',
'Mannheim',
'(0621) 24775'
],
[
'Brand Bernhard Dr.med. u.',
'Jakobs Christian Dr.med.',
'Waldstr. 143',
'68305',
'Mannheim',
'(0621) 752034'
],
[
'Dangl',
'Stefan Dr. med.',
'Grohbergstr. 9',
'68309',
'Mannheim',
'(0621) 736800'
]
];
Name, Vorname | Straße | Plz | Ort | Telefon
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
use Spreadsheet::SimpleExcel; my $xls = Spreadsheet::SimpleExcel->new; $xls->add_worksheet( 'Adressen' ); open my $fh, "<", "adressen.txt" or die $!; local $/ = "jetzt eintragen!\n"; # als paragraphentrenner betrachten chomp(my @p = <$fh>); for my $paragraph (@p) { my (undef, $name, $address) = split /\n/, $paragraph; my ($street, $city, $phone) = split / (?=\d{5} |\(\d{3,5}\) )/, $address, 3; $xls->add_row( [ $name, $street, $city, $phone ] ); } $xls->output_to_file( 'test.xls' );
QuoteNoch ne Idee?ä = ä oder ü = ü
open my $fh, "<:encoding(UTF-8)", "adressen.txt" or die $!;
open my $fh, "<:encoding(UTF-8)", "adressen.txt" or die $!;