Schrift
[thread]6014[/thread]

Zeilenweise aus Datei in Array lesen

Leser: 3


<< |< 1 2 >| >> 15 Einträge, 2 Seiten
Patrick
 2004-01-14 08:48
#79121 #79121
User since
2004-01-07
56 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich möchte eine Datei öffnen und deren Inhalt zeilenweise in ein Array laden!

Also:
1. Zeile in Array[0]
2. Zeile in Array[1]
.
.
.
usw.

Wie kann ich das nun bewerkstelligen?

hier mal der aktuelle Code:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Subroutine um Datei zu erstellen und zu beschreiben
sub create_file
{
  $file = "test.txt";

  open(DATEI, " < $file")
  or die "Fehler beim öffnen! \n $! \n";

  while (<DATEI>)
  {
     push (@array1, $_);
  }

  close (DATEI)
  or die "Fehler beim Schließen der Datei! \n";

# Hier soll dann eine Schleife laufen, die nur die ersten 5 Zeilen ausgibt
#   for ($i=0, $i<=5, $i++)
#   {
#      print "@array1";
#   }
}


Derzeit schreibe ich halt die Ganze Datei in das erste Array-Element.

Danke im Voraus!
Mfg
Paddy

Perl ist göttlich, die Kunst besteht darin Perl anwenden zu können.
Patrick
 2004-01-14 08:55
#79122 #79122
User since
2004-01-07
56 Artikel
BenutzerIn
[default_avatar]
Ok, sorry.

Hat sich erledigt.
Trotzdem Danke:D
Mfg
Paddy

Perl ist göttlich, die Kunst besteht darin Perl anwenden zu können.
havi
 2004-01-14 08:59
#79123 #79123
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Hi!

Es waere vielleicht fuer einige Leute interessant wie du das
Problem geloest hast...

Gruss
Patrick
 2004-01-14 09:56
#79124 #79124
User since
2004-01-07
56 Artikel
BenutzerIn
[default_avatar]
Sorry, hier der Code.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sub create_file
{
$file = "test.txt";

  open(DATEI, " < $file")
  or die "Fehler beim öffnen! \n $! \n";


  while (my $line = <DATEI>)
  {
     push (@array1, $line);
  }

  close (DATEI)
  or die "Fehler beim Schließen der Datei! \n";

  for ($i=0; $i<=5; ++$i)
  {
     print "$array1[$i]";
  }
}
Mfg
Paddy

Perl ist göttlich, die Kunst besteht darin Perl anwenden zu können.
format_c
 2004-01-14 09:59
#79125 #79125
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Mein Tipp wenn die Dateien nicht zu groß sind:
Code: (dl )
1
2
3
open FILE,'<','datei.txt' or die $!;
my @inhalt = <FILE>;
close FILE;


Und deine for-Schleife ist zwar schön in C-Style aber perlischer und einfacher zu verstehen so:
Code: (dl )
print $inhalt[$_] for 0..5;

Siehe perldoc perlstyle

Gruß Alex\n\n

<!--EDIT|format_c|1074067290-->
havi
 2004-01-14 10:02
#79126 #79126
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Ok, haette ich auch gleich posten koennen, wenn ich mir
das Beispiel angesehen haette :)

Alternativvorschlag fuer die for-Schleife:
Code: (dl )
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl

use warnings;
use strict;

my @array = (1,2,3,4,5,6,7,8,9);

print join("\n", @array[0..$#array]), "\n";
#print join("\n", @array[0..5]), "\n";


Gruss
Crian
 2004-01-14 11:29
#79127 #79127
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Wie wärs mit 1..9 statt 1,2,3,4,5,6,7,8,9 ? ;)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
havi
 2004-01-14 11:35
#79128 #79128
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Schon klar, aber ich wollte im das Beispiel ordentlich zeigen!
Wenn ich es so gemacht haette, waeren vielleicht unnoetige
Unklarheiten aufgetreten.

Gruss
Crian
 2004-01-14 12:21
#79129 #79129
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Vielleicht sollte man noch auf die Möglichkeit des Moduls Data::Dumper hinweisen:

Code: (dl )
1
2
3
4
5
6
7
8
#!/usr/bon/perl
use strict;
use warnings;
use Data::Dumper;

my @array = (1..5);

print Dumper \@array;


Ausgabe:

Code: (dl )
1
2
3
4
5
6
7
$VAR1 = [
         1,
         2,
         3,
         4,
         5
       ];


Lässt man den Slash in der print-Zeile weg (und verwendet also das Array selbst statt einer Referenz darauf), so lautet die Ausgabe:

Code: (dl )
1
2
3
4
5
$VAR1 = 1;
$VAR2 = 2;
$VAR3 = 3;
$VAR4 = 4;
$VAR5 = 5;
\n\n

<!--EDIT|Crian|1074075819-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Patrick
 2004-01-14 12:45
#79130 #79130
User since
2004-01-07
56 Artikel
BenutzerIn
[default_avatar]
Da Ihr ja schon so lustig dabei seid könntet Ihr mir vielleicht
verraten wie ich eine Zeichenkette oder ein Element eines Array's im detail bearbeite!?

Dies soll wie folgt aussehen:

String/Array[x] Bsp.:
PATH      =    /homes/usr/

nun möchte ich nur den Eintrag "/homes/usr/" auslesen und nach meinen Vorgaben modifizieren.

Das "PATH      =    " soll dabei unverändert bleiben.

Wie kann ich das anstellen?

Wiederum Danke
Mfg
Paddy

Perl ist göttlich, die Kunst besteht darin Perl anwenden zu können.
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2004-01-14 08:48.