Schrift
[thread]12037[/thread]

Problem beim zeilenweisen Einlesen einer Datei in ein Array !

Leser: 1


<< |< 1 2 3 >| >> 24 Einträge, 3 Seiten
cherished
 2008-06-18 13:29
#111174 #111174
User since
2008-06-18
31 Artikel
BenutzerIn
[default_avatar]
Hallo !

Ich bin Neuling in der PERL Programmierung und noch in der Ausbildung.
Ich soll aus einer .txt Datei jede Zeile auslesen und spliten, sodass ich diese mit einer 2ten .txt Datei, wo ic hdas gleiche machen muss, vergleichen kann und dann eine Ausgabe mache.

Mein Problem ist mehr am Anfang. Ich kriege es hin die erste Zeile zu nutzen und im Array test ist jetzt gesplitet die erste Zeile. Aber wie kriege ich es hin das das Programm sich Zeile für Zeile vornimmt und das splitet.

Das habe ich bis dato:

open(SOLLDATEI,"<a.txt");
$solldatei = <SOLLDATEI>;

@test = split(/;/, $solldatei);
print join("\n",@test[1]);

Hab schon gegoogelt aber ich komme nicht weiter.
Danke im vorraus.
cherished
Linuxer
 2008-06-18 13:35
#111177 #111177
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hi,

zeilenweises Einlesen machst Du mit einer while-Schleife.

Code (perl): (dl )
1
2
3
4
5
6
#...
open my $handle, '<', $dateiname or die "$dateiname: $!";
while ( my $line = <$handle> ) {
  # tu was mit $line
}
close $handle;

meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
cherished
 2008-06-18 13:36
#111178 #111178
User since
2008-06-18
31 Artikel
BenutzerIn
[default_avatar]
Linuxer+2008-06-18 11:35:08--
Hi,

zeilenweises Einlesen machst Du mit einer while-Schleife.

Code (perl): (dl )
1
2
3
4
5
6
#...
open my $handle, '<', $dateiname or die "$dateiname: $!";
while ( my $line = <$handle> ) {
  # tu was mit $line
}
close $handle;



Sehr Vielen dank für diese schnelle Antwort.
Werde das direkt mal weiter testen und wenn ich nicht witerkomme melde ich mich =)
renee
 2008-06-18 13:37
#111179 #111179
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
So liest man eine Datei zeilenweise ein:

Code (perl): (dl )
1
2
3
4
5
6
7
my $file = 'a.txt';

open my $filehandle, '<', $file or die $!;
while( my $ziele = <$filehandle> ){
    # mach was mit der einzelnen Zeile
}
close $filehandle;


Du solltest Wiki:lexikalische Filehandles nehmen. Und die 3-Arg-Form von open (siehe auch perldoc -f open). Und Fehlerbehandlung (das or die $!) sollte auch gemacht werden.
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/
cherished
 2008-06-18 14:55
#111186 #111186
User since
2008-06-18
31 Artikel
BenutzerIn
[default_avatar]
Also ich habe das jetzt so weit hinbekommen nur ein Problem habe ich jetzt.

Wie sollte man das am besten lösen wenn man den inhalt also eine zeile mit 4 spalten jeweils hat und mit jedem element arbeiten will.

Bsp: Was ich machen muss !

a.txt
10_01;23;22364;29864
10_02;24;22365;29865
10_03;25;22366;29866
10_04;27;22367;29868
10_05;23;22323;29834

b.txt
10_08;24;222364;3329864
10_02;24;22365;29865
10_14;27;22767;29768
10_15;23;22323;29834
10_16;27;2231264;21219864

so sehen die aus. Erste Spalte ist die ID. A.txt ist der SOLL zustand B.txt der IST .
Jetzt muss ich halt die erste ID von a.txt nehmen die in der b.txt suchen und dann spalte 2 mit 2 vergleichen und 3 mit 3 ... bis n.
Wenn alles gleich ist halt inner Ausgabedatei sagen. Jo ID XXX ist gleich.

Wie geh ich am besten vor ?
renee
 2008-06-18 14:57
#111188 #111188
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Arbeite am Besten mit CPAN:DBI zusammen mit CPAN:DBD::CSV. Damit kannst Du a.txt und b.txt wie Datenbanken behandeln und ganz normale "SELECT"-Statements absetzen...

Siehe auch diesen Wiki:Artikel.
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/
cherished
 2008-06-18 15:31
#111193 #111193
User since
2008-06-18
31 Artikel
BenutzerIn
[default_avatar]
ist ne coole Sache nur das Problem ist bis ich mcih da rein gelesen haeb vergehen einige tage ... die hab ich nicht.
gibts da nen kompaktere tuto oder so ?
pq
 2008-06-18 15:59
#111195 #111195
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
also kürzer als der von renee verlinkte artikel würd ichs kaum bringen. dafür braucht man
doch nicht mehrere tage...
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
cherished
 2008-06-18 16:00
#111196 #111196
User since
2008-06-18
31 Artikel
BenutzerIn
[default_avatar]
bin dohc nur ein armer SI ...
Ich bin jetzt soweit , aber der vergleicht bei mir die Strings nicht.
geht das in Perl nicht?

my $solldatei = 'a.txt';
my $istdatei = 'b.txt';

open my $filehandle, '<', $solldatei;
open my $filehandle1, '<', $istdatei;

while( my $ziele = <$filehandle> )
{
@test = split(/;/, $ziele);
while( my $ziele1 = <$filehandle1>)
{
@test1 = split(/;/, $ziele1);
if(@test[0]==@test1[0])
{
print "@test[0]";
print " und";
print " @test1[0]";
print " COOL!\n";
$x=0;
}
else
{
print "SCHEISSE";
}
}

}

close $filehandle;
close $filehandle1;
renee
 2008-06-18 16:11
#111197 #111197
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Stringvergleiche werden mit eq gemacht...
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/
<< |< 1 2 3 >| >> 24 Einträge, 3 Seiten



View all threads created 2008-06-18 13:29.