Perl Probleme
RedBO
- perl
0 Philipp Hasenfratz0 RedBO
0 Struppi0 Richard Voß0 Struppi
0 alligator0 Miq
Hallöchen !
Also ich habe ein Problem was wie folgt aussieht:
ich möchte mit dem Perl Script eine Textdatei öffnen und diese zeilenweise durchsuchen lassen:
auswahl.txt
..
schmidt , hubert
genscher , vladimir
duersie , ich
..<
wenn er dann an einer stelle angekommen ist, also welchen name ich suche dann soll er mir den vornamen und nachnamen jeweils in eigener variable legen.
ich dachte an sowas:
$datei ="auswahl.txt"; /-> meine Datei
open (DATEI, $datei); /-> öffne Datei
while .... (<DATEI> ) /-> durchlaufe Datei solang bis gewünschter Wert gefunden wurde
@namen = split (/ , / , DATEI); /-> Suche aus Zeile Name und Vorname und split(t)e die jeweils in eine eigene Datei
!?
!?
oder wie könnte ich das machen !?
Wäre über Antworten echt dankbar!
MFG RedBO
Halihallo RedBO
wenn er dann an einer stelle angekommen ist, also welchen name ich suche dann soll er mir den vornamen und nachnamen jeweils in eigener variable legen.
$datei ="auswahl.txt"; /-> meine Datei
open (DATEI, $datei); /-> öffne Datei
while .... (<DATEI> ) /-> durchlaufe Datei solang bis gewünschter Wert gefunden wurde@namen = split (/ , / , DATEI); /-> Suche aus Zeile Name und Vorname und split(t)e die jeweils in eine eigene Datei
if ($namen[0] eq $gesuchter_name) {
$name=$namen[0];
$vorname=$namen[1];
}
dann wird der Name und Vorname in "jeweils in eigener variable" abgelegt, wenn der
Nachname zutrifft.
Viele Grüsse
Philipp
Servuz Phil .....
if ($namen[0] eq $gesuchter_name) {
$name=$namen[0];
$vorname=$namen[1];
}
ja das ist gut danke, ist das schon für die Schleife oder wie sage ich dem das er die Datei Zeile für Zeile absuchen soll!
Aha in dem Array steht also immer: Name1, Vorname1, Name2, Vorname2, .... so müsste das Array dann aussehen oder !?
Ich weiß ich habe viele fragen :-)
Halihallo RedBO
ja das ist gut danke, ist das schon für die Schleife oder wie sage ich dem das er die Datei Zeile für Zeile absuchen soll!
perldoc -f last
Aha in dem Array steht also immer: Name1, Vorname1, Name2, Vorname2, .... so müsste das Array dann aussehen oder !?
Nein, das war ein Skalar, kein Array:
Für Hashes, Arrays und Skalare: perldoc perlfaq4
Viele Grüsse
Philipp
naja ich hatte auf ein paar Befehle gehofft mit denen ich arbeiten sollte bzw nach denen ich dann suchen könnte!
:-((
MFG
ich dachte an sowas:
use strict;
$datei ="auswahl.txt"; /-> meine Datei
my $datei = 'auswahl.txt';
open (DATEI, $datei); /-> öffne Datei
open DATEI, $datei || die "Kann $datei nicht zum lesen öffnen, weil: $!";
while .... (<DATEI> ) /-> durchlaufe Datei solang bis gewünschter Wert gefunden wurde
'eq' iswt der Vergleichsoperator für Strings.
@namen = split (/ , / , DATEI); /-> Suche aus Zeile Name und Vorname und split(t)e die jeweils in eine eigene Datei
Das ist Quatsch, du willst die aktuelle Zeile splitten und weißt, das es maximal zwei Ergebnisse gibt.
chomp; # Newline zeichen abschneiden
my( $vor_name, $nach_name) = split /,/, $_;
Ansonsten ist die perlfaq http://perldoc.com/perl5.8.0/pod/perlfaq.html (liegt aber auch auf deinem Rechner) ein guter Einstieg, um nicht direkt von Anfang an zuviele Fehler zu machen.
Struppi.
open (DATEI, $datei); /-> öffne Datei
open DATEI, $datei || die "Kann $datei nicht zum lesen öffnen, weil: $!";
open DATEI, '<' , $datei or die ".....";
perldoc perlop (!), deine Variante ist tasächlich fehlerhaft.
Mit dem Rest hast du völlig Recht.
open (DATEI, $datei); /-> öffne Datei
open DATEI, $datei || die "Kann $datei nicht zum lesen öffnen, weil: $!";
open DATEI, '<' , $datei or die ".....";
perldoc perlop (!), deine Variante ist tasächlich fehlerhaft.
'<' ist optional und wenn schon dann so "<$datei"
aber mit dem or operator hast du recht, bzw. meine Version müßte so aussehen:
open (DATEI, $datei) || die ....
Struppi.
open (DATEI, $datei); /-> öffne Datei
open DATEI, $datei || die "Kann $datei nicht zum lesen öffnen, weil: $!";
open DATEI, '<' , $datei or die ".....";
perldoc perlop (!), deine Variante ist tasächlich fehlerhaft.
'<' ist optional und wenn schon dann so "<$datei"
RTFM, bitte.
'<' ist optional und wenn schon dann so "<$datei"
RTFM, bitte.
ja und da lese ich folgenden Satz " If MODE is '<' or nothing, the file is opened for input. " oder reden wir von etwas anderem?
Struppi.
ich danke euch für eure reichlichen Antworten ich werde mir das mal zu Gemüte führen!
danke danke!
Hi,
$datei ="auswahl.txt"; /-> meine Datei
open (DATEI, $datei); /-> öffne Datei
flock nicht vergessen
while .... (<DATEI> ) /-> durchlaufe Datei solang bis gewünschter Wert gefunden wurde
my @namen;
while(<DATEI>)
{
my $i++;
print "Zeile $i: $_\n";
my @dummy = split(/,/,$_);
push(@namen, @dummy);
}
open (NEUEDATEI, ">neu.txt") or die $!;
for (my $i;$i<$#namen;$i+=2)
{
print NEUEDATEI "Vorname: $namen[$i+1]\n";
print NEUEDATEI "Nachname: $namen[$i]\n\n";
}
close NEUEDATEI;
cya
alligator
Upps, irgendwie hab ich die Zeile überlesen mit der Namensüberprüfung.
Hat mich schon gewundert...
Vergiss einfach das Posting :o))
cya
alligator
Also ich habe ein Problem was wie folgt aussieht:
ich möchte mit dem Perl Script eine Textdatei öffnen und diese zeilenweise durchsuchen lassen:
auswahl.txt
..
schmidt , hubert
genscher , vladimir
duersie , ich
..<wenn er dann an einer stelle angekommen ist, also welchen name ich suche dann soll er mir den vornamen und nachnamen jeweils in eigener variable legen.
ich dachte an sowas:
so z.B. (nicht getestet... :-)
$datei ="auswahl.txt"; /-> meine Datei
open (DATEI, $datei); /-> öffne Datei
map ($nach,$vor)=split('\s*,\s*') , grep(/$suchname/,<DATEI>);
close(DATEI);