perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 32
Click for quality!




10.02.2012 / 10:03

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragPerl: brauche nur Teile einer Textdatei
Seitenanfang
Hallo zusammen,
habe folgendes Problem:

Ich möchte aus einer Textdatei bestimmte Infos in eine DB schreiben.
das Auslesen der Datei hab ich hinbekommen, aber wie Trenne ich die Werte voneinander?

Aufbau der Datei:

Name=Müller
Vorname=Heinz
Tel=123456
usw

nun möchte ich diese Daten in eine Mysql-DB schreiben.


#!/usr/bin/perl -w
#
# Script um wav Datein in DB zu schreiben
# Perl Module
use strict;
use LWP;
use DBI;
use vars qw($zeile);
use CGI::Carp qw(fatalsToBrowser);

my $DB_NAME = "test";
my $DB_DSN = "DBI:mysql:database=$DB_NAME";
my $DB_USER = "test";
my $DB_PASSWD = "";
my $dbh = DBI->connect($DB_DSN, $DB_USER, $DB_PASSWD) or die "Fehler bei Datenbankverbindung: $!";

# erst mal die txt Dateien auslesen
my $TXTPATH = "/home/rolf";

open(DATEI, "<$TXTPATH/adress.txt") || die "Datei nicht gefunden";

my @lines = (<DATEI>);

close (DATEI);

print "$lines[4]\n";
print "$lines[9]\n";
print "$lines[10]\n";
print "$lines[11]\n";
print "$lines[12]\n";

my $sql = qq["insert into voicebox (user, messages) VALUES ( '$lines[4]', '$lines[10]')"];
my $sth = $dbh->do($sql);

# my @DB_FELDER = $dbh->list_fields('voicebox');
$dbh->disconnect;

es werden die richtigen Werte ausgelesen, aber ich weiß nicht wie ich Sie trennen kann, mit spit hab ich es nicht hinbekommen.

Danke für die Hilfe

Rolf

Datum: 06.01.2006-13:55

Beitragre: Perl: brauche nur Teile einer Textdatei
Seitenanfang

my(@parts) = split(/\s*=\s*/, $line, 2);

-- 3a2d275a5c68d91e376c562e86419f35

Datum: 06.01.2006-20:21

Beitragre: Perl: brauche nur Teile einer Textdatei
Seitenanfang
Hallo Rolf,

Was willst Du denn wie/wonach trennen? Hast Du ein Beispiel dafür? Was hast Du versucht?

Gruss, Michael

Datum: 06.01.2006-20:21

Beitragre: Perl: brauche nur Teile einer Textdatei
Seitenanfang
Hallo,
danke für die schnellen Antworten.
Also Die datai die ich bekomme hat folgenden Aufbau:
Name=Mueller
Vorname=Heinz
Position=GF
usw

Ich brauche daraus nun nur
Mueller
Heinz
GF
die ich in eine DB übergeben möchte.
Ich hab es bisher mit split versucht

(split /=/, $zeile);

leider ohne Erfolg.

Gruß

Rolf

Datum: 07.01.2006-00:33

Beitragre: Perl: brauche nur Teile einer Textdatei
Seitenanfang
Hallo Rolf,

Dann warst Du nahe dran: split gibt eine Liste zurück, also zumindest den Teil vor (scalar 0) und den Teil nach (scalar 1) dem Pattern. Versuch' doch 'mal so etwas wie dieses:


$s = "Name=Mueller";
@s = split /=/, $s;
print $s[0]; # ergibt: Name
print $s[1]; # ergibt: Mueller

Wenn Du's ganz eilig hast, kannst Du natürlich auch so etwas machen:


$ergebnis = (split /=/, $s)[1];

und so gleich auf das Ergebnis zugreifen (steht unter dem Listenindex '1').

Gruss, Michael

Datum: 07.01.2006-17:31

Beitragre: Perl: brauche nur Teile einer Textdatei
Seitenanfang
danke es funktioniert :):)

Datum: 07.01.2006-17:39

Beitragre: Perl: brauche nur Teile einer Textdatei
Seitenanfang
Hallo soweit geht es, aber ich bekomme nur einen Teil meiner Datei zurück, also:

Name=Müller
Vorname=Heinz
Telefon= 123456
PLZ=45678
Ort=Hierhausen

zurück bekomme ich aber nur "Müller"

$s = "Namederdatei.txt";
@s = split /=/, $s;
print $s[0]; # ergibt: Name
print $s[1]; # ergibt: Mueller

was muss ich noch tun, damit perl ganze dateien ausliest und mir nur einen Teil Salar[1] ausgibt, damit dann dieser Teil in eine DB geschrieben werden kann?

danke

Rolf

Datum: 09.01.2006-06:56

Beitragre: Perl: brauche nur Teile einer Textdatei
Seitenanfang
Hallo Rolf,

Dazu mußt Du das File einlesen und Zeile für Zeile durchgehen. Also z.B. so:


$f = "Namederdatei.txt";

open F, $f or die "Kann $f nicht oeffnen $!\n";
@x = <F>; # alles einlesen
close F;

foreach $s (@x) { # für jede Zeile
@s = split /=/, $s;
print $s[0] . "\n"; # ergibt: Name
print $s[1] . "\n"; # ergibt: Mueller
}

Gruß, Michael

Datum: 09.01.2006-20:54

Beitragre: Perl: brauche nur Teile einer Textdatei
Seitenanfang
Hi,
mir scheint, hier fehlt noch was: alle Zeilen haben noch das Newline, das wird sicher Probleme geben, bzw. vermute ich, dass Du nicht hinter jedem Wert noch einen Zeilenumbruch in der Datenbank stehen haben willst.

Am einfachsten geht das (bei Deinem Code) so:


open F, $f or die "Kann $f nicht oeffnen $!\n";
@x = <F>; # alles einlesen
chomp @x; # <- auf alle Elemente des Arrays chomp() anwenden
close F;

Gruss,
svenXY

Datum: 11.01.2006-10:47

-






-
-