Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6433[/thread]

Split HTML: Split HTML

Leser: 2


<< >> 7 Einträge, 1 Seite
carlo.eberhardt
 2004-07-27 16:33
#84993 #84993
User since
2004-07-27
3 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo liebe Leute...

Bin ein PERL-Newbie und habe eine Frage zur Split-funktion.

Ich habe eine HTML-Seite welche ich Splitten möchte.

Mein Anfängercode ;-)

weiss, ist vieleicht sinnlos...

#!/usr/bin/perl
#use strict;
my $file = "result.html";
open(FILE, "<$file");
my @lines = <FILE>;
close(FILE);
foreach $i (@lines)
{
(@a, @b, @c, @d, @rest) = split(/stelle wo geschnitten werden soll/, $i, 4)
}
print "@a\n";
print "@b\n";
print "@c\n";
print "@d\n";
print "@rest\n";

leider funktionierts nicht :-(

wäre froh, wenn mir jemand behilflich sein könnte.

Eberhardt Carlo
pq
 2004-07-27 16:43
#84994 #84994
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
du hast was wichtiges vergessen. wie sieht denn deine html-datei aus?
sollen wir raten? ok, dann rate ich mal, du willst jede zeile splitten,
aber nur in maximal 5 teile, ja? dann versuch mal den code hier, der läuft wenigstens
mit strict und warnings und bricht auch ab, falls die datei nicht geöffnet
werden kann.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl
use strict;
use warnings;
my $file = "result.html";
open FILE, "<", $file or die $!;
my @lines = <FILE>;
close FILE;
foreach my $line (@lines) {
my ($a, $b, $c, $d, $rest) = split(/stelle wo geschnitten werden soll/, $line, 4);
print "$a\n";
print "$b\n";
print "$c\n";
print "$d\n";
print "$rest\n";
}
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Relais
 2004-07-27 16:52
#84995 #84995
User since
2003-08-06
2244 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hallo Carlo,

willkommen bei der Perl-Community!

Großes Lob für den Code und dazu auch gleich ein paar Tips vorneweg:

Setze den Code in [code]-Tags. So lesen wir ihn gern.

use strict; # sollte drinnen bleiben, denn es schützt Dich vor allerlei Fehlern.

open(FILE, "<$file") or die $!; # schützt vor unerwarteten Überraschungen.

foreach $line (@lines) # probier es vielleicht lieber mit einer while-Schleife?

Code: (dl )
while my $line ( <FILE> ) { ...


(@a, @b, @c, @d, @rest) = split(/stelle wo geschnitten werden soll/, $line, 4)

Code: (dl )
my ($a, $b, $c, $d, @rest) = split(/stelle wo geschnitten werden soll/, $line, 4)


Da Arrays mit dem "@" keine feste Länge haben, kann split nicht wissen, wie Du das gemeint hast. Es schreibt einfach alles ins erste Array. Das ist aber auch nicht dumm, so geht alternativ:

Code: (dl )
1
2
my @teil = split(/stelle wo geschnitten werden soll/, $line, 4);
print $teil[0], "\n", $teil[1], "\n", $teil[2], "\n", $teil[3], "\n", @teil[ 4 .. $#teil ], "\n";


Ähnlich:
Code: (dl )
print( join ( "\n", @teil[ 0 .. 3 ], join( " ", @teil[ 4 .. $#teil ] ) ), "\n");


Edit: my vor die Variablen gepinselt.
Edit2: @ptks "stilistischem" Hinweis gefolgt, $i umbenannt 8)\n\n

<!--EDIT|Relais|1090939223-->
Erst denken, dann posten --
26. Deutscher Perl- u. Raku -Workshop 15. bis 17.04.2024 in Frankfurt/M.

Winter is Coming
ptk
 2004-07-27 18:02
#84996 #84996
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ein stilistischer Hinweis: $i sollte numerischen Laufvariablen vorbehalten sein, so wie man es aus dem Mathematikunterricht kennt. Wenn du ueber Zeilen iterierst, kannst du $line oder $l nehmen.
carlo.eberhardt
 2004-07-27 18:30
#84997 #84997
User since
2004-07-27
3 Artikel
BenutzerIn
[Homepage] [default_avatar]
http://tel.search.ch/result.html?name=Rudolf+Eberh...

möchte diese Seite nach Name, Telephonnummer und Adresse splitten.
carlo.eberhardt
 2004-07-27 18:33
#84998 #84998
User since
2004-07-27
3 Artikel
BenutzerIn
[Homepage] [default_avatar]
bzw. die Tabellen in der Mitte ausschneiden ...
renee
 2004-07-27 18:44
#84999 #84999
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Zum Parsen soll das Modul HTML::Parser geeignet sein...

Hier wurde über das Modul schon gesprochen:
http://board.perl-community.de/cgi-bin....0;t=143
http://board.perl-community.de/cgi-bin....0;t=907
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 7 Einträge, 1 Seite



View all threads created 2004-07-27 16:33.