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

FAQ-Datei auslesen: Mehrere mehrzeilige Datensätze in einer



<< >> 4 Einträge, 1 Seite
McLoude
 2007-05-09 18:02
#109 #109
User since
2007-04-16
2 Artikel
BenutzerIn
[default_avatar]
Hallo Zusammen,

ich bin seit ca. 2 Monaten von PHP auf Perl umgestiegen (beruflich notwendig gewesen), daher habe ich noch ein paar Anfängerproblemen. Hier nun mein Problem.

Ich habe eine FAQ-Textdatei in der die Datensätze wie folgt stehen:

Code: (dl )
1
2
3
4
5
6
7
8
9
%_DATENSATZ_%
Frage
%_TRENNER_%
Meine Tolle<br>
Antwort<br>
.....

%_DATENSATZ_%
....


%_DATENSATZ_% = Trenner für den Datensatz
%TRENNER_% = Trenner zwischen Frage und Antwort

Im Prinzip wollte ich es mir einfach machen und nur den Split befehl dafür nutzen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
....
open (FAQ,"meinedatei.txt") or die "Fehler beim öffnen der Datei\n$!";
while(<FAQ>)
{

my @faq_datensatz = split (/%_DATENSATZ_%/,%_DATENSATZ_%; #(m/:::/,$_);
foreach ( sort @faq_datensatz ) {
my $datensatz = $faq_datensatz[0];
my @faq_einzeldaten = split(/%_TRENNER_%/,$datensatz );
my $frage = $faq_einzeldaten[0];
my $antw = $faq_einzeldaten[1];
$x = qq{<h2>$frage</h2><p>$antw</p>};
print $x;
}

}
....


Aber bei dem Code kommt nur Müll raus! Er Trennt schon die Datensätze nicht richtig, interpretiert teilweise Umbrüche und Leerzeichen als Trenner.

Ich bin ratlos. Vielleicht ist ja auch mein ganzer Anfang falsch.
Bin für jeden Lösungsansatz dankbar.

Gruß, McLoude
renee
 2007-05-09 20:18
#110 #110
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my $faq = '/path/to/faq.txt';
my @faqs;

{
local $/ = '%_DATENSATZ_%';
open my $fh, '<', $faq or die $!;
while( my $entry = <$fh> ){
push @faqs, [split /\Q%_TRENNER_%\E/,$entry,2];
}
close $fh;
}

print Dumper(\@faqs);


Zu $/ siehe perlvar und zu split siehe <!--pod_f1--><a href="//perldoc.perl.org/functions/split.html" target="_blank"><img alt="perldoc " src="/iB_html/non-cgi/Skin/SKIN-3/images/perldoc.gif" border="0"> <!--pod_f2-->-f split<!--pod_f3--></a><!--pod_f4-->...
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/
McLoude
 2007-05-10 11:38
#111 #111
User since
2007-04-16
2 Artikel
BenutzerIn
[default_avatar]
GENIAL!!! DANKE!!!!
Du hast mir wirklich geholfen, habe gestern den ganzen Tag gewerkelt und nix geschafft. Habs sogar verstanden
Da fehlt mir dann doch halt die Perl-Erfahrung (In PHP werkel ich dagegen schon seit 5 Jahren)

Viele Grüße aus Cottbus, McLoude
renee
 2007-05-10 13:30
#112 #112
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Allerdings fehlt in der while-Schleife noch ein chomp $entry...
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/
<< >> 4 Einträge, 1 Seite



View all threads created 2007-05-09 18:02.