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

split Problem



<< >> 4 entries, 1 page
perli
 2006-10-11 19:16
#70691 #70691
User since
2003-09-12
23 articles
BenutzerIn
[default_avatar]
Hallo,
ich habe html Templates mit Steuer Tags drin.
Diese Tags beginnen und enden mit ##.
Also z.b. ##loop hallo## oder ##if kz_gesetzt## oder ##end## usw.
Ich hätte nun gerne den Quellcode eingelesen und über split in ein Array geschoben. Jedoch mit der Besonderheit, daß alle ##anweisung## (s.oben) in einer eigenen Zeile im Arry auftauchen.
Die eingelesene HTML Seite habe ich in $text stehen.

Mit folgendem split wollte ich das Array aufbauen:
Code: (dl )
my @zeilen = split(/(\#\#*.?\#\#)|\x0d\n|\n|\t/ig, $text);


Leider funktioniert es nicht, wenn ich 2 Anweisungen in einer Zeile habe - z.b.:
##loop nase## ##if nase-kz_gesetzt##

In diesem Fall bleiben die beiden Anweisungen in einer Zeile und ich hätte gerne, daß daraus 2 Zeilen werden. Bei 3 Anweisungen natürlich 3 Zeilen.

Wäre super, wenn mir jemand helfen könnte.

Danke & Gruß,
 Roger
bloonix
 2006-10-11 20:29
#70692 #70692
User since
2005-12-17
1615 articles
HausmeisterIn
[Homepage]
user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use strict;
use warnings;
use Data::Dumper;

my $text = "foo##loop nase## foo  ##if nase-kz_gesetzt## foo\n##loop nase##foo ##if nase-kz_gesetzt##foo";

my @foo = split /(##.+?##)/, $text;
my @bar = split /##(.+?)##/, $text;
my @foobar = ($text =~ /##(.+?)##/g);

chomp(@foo,@bar,@foobar);

print Dumper(\@foo);
print Dumper(\@bar);
print Dumper(\@foobar);


$VAR1 = [
         'foo',
         '##loop nase##',
         ' foo  ',
         '##if nase-kz_gesetzt##',
         ' foo',
         '##loop nase##',
         'foo ',
         '##if nase-kz_gesetzt##',
         'foo'
       ];
$VAR1 = [
         'foo',
         'loop nase',
         ' foo  ',
         'if nase-kz_gesetzt',
         ' foo',
         'loop nase',
         'foo ',
         'if nase-kz_gesetzt',
         'foo'
       ];
$VAR1 = [
         'loop nase',
         'if nase-kz_gesetzt',
         'loop nase',
         'if nase-kz_gesetzt'
       ];



Aber nu sach ma, so aus reiner Neugier... erfindest du gerade das Rad
neu? Du weißt doch hoffentlich, dass es da schon zwei hervorragende
Module für gibt, oder? =)

CPAN:HTML Template
CPAN:HTML Template Compiled\n\n

<!--EDIT|opi|1160584319-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
sid burn
 2006-10-12 11:49
#70693 #70693
User since
2006-03-29
1520 articles
BenutzerIn

user image
Oder
CPAN:Template::Toolkit
CPAN:HTML::Mason
was eher entspricht Perl Code in einer HTML Datei zu schreiben.

Mag aber auch HTML::Template lieber.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
perli
 2006-10-12 13:02
#70694 #70694
User since
2003-09-12
23 articles
BenutzerIn
[default_avatar]
Hallo,

SUPER - Vielen Dank. Hat geklappt.
Ich habe noch einige Sonderlocken in die HTML Generierung aus den Templates mit eingebaut. Dadurch kann ich sehr viel programmgesteuert erledigen, ohne daß der Template Entwickler (absoluter Laie) auf irgendetwas achten muß.

Die erwähnten Module habe ich damals getestet.

Danke & Gruß,
Roger
<< >> 4 entries, 1 page



View all threads created 2006-10-11 19:16.