Schrift
[thread]8660[/thread]

Referenz beim Einlesen einer Datei?



<< >> 5 Einträge, 1 Seite
TheDHK
 2007-01-20 11:10
#73367 #73367
User since
2007-01-19
37 Artikel
BenutzerIn
[default_avatar]
Hi,
sorry, vielleicht ist meine Frage ein wenig dumm, aber ich kenne mich mit Perl noch nicht ganz so gut aus. Ich möchte den gesamten Inhalt einer Datei in ein Array einlesen. Dazu hab ich folgendes Skript:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl -w
use strict;
use warnings;

use Tk;

my @test = ("");

my $top = MainWindow -> new(-background => 'black', -height => '768', -width => '1024');
$top -> title('Scrutator');


my $rw = open(FILE,'E:\Eigene Dateien\Programme\Test\profiles.xml');
if(not defined($rw)) {
die "Fehler beim Öffnen der Datei: $!\n";
}
while(defined(my $i = <FILE>)) { $test[0] = $i; }
close(FILE);


MainLoop;


Wie ihr seht, wird dem Array $test[0] in der while-Schleife der Wert von $i zugewiesen. Wie kann ich nun auch außerhalb der Schleife auf das Array $test[0] zugreifen? Hab das schon probiert, aber $test[0] war dann leer.

Gruß

TheDHK
Ronnie
 2007-01-20 11:46
#73368 #73368
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Geht viel einfacher:
Code: (dl )
my @array = <FILE>;
TheDHK
 2007-01-20 11:53
#73369 #73369
User since
2007-01-19
37 Artikel
BenutzerIn
[default_avatar]
Vielen Dank. Jetzt funktionierts.

Gruß

TheDHK\n\n

<!--EDIT|TheDHK|1169286832-->
topeg
 2007-01-20 11:58
#73370 #73370
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Nun Perl ließt von "natur aus" jede Zeile einzeln ein (das ist in $/ festgelegt was ein Zeilentrenner sein soll)
wenn du allso das machst:
Code (perl): (dl )
while(defined(my $i = <FILE>)) { $test[0] = $i; }

wird in "$test[0]" immer die letzte Zeile der Datei eingelesen, da perl mit der ersten Zeile beginnt und mit der letzten aufhört.
willst du eine ganze datei in ein Array einlesen geht das so:
Code (perl): (dl )
while(defined(my $i = <FILE>)) { push(@test,$i); }

oder so:
Code (perl): (dl )
@test=<FILE>;

wenn du die gesammte datei in einen Arrayeintrag haben willst mußt du es so machen:
Code (perl): (dl )
$test[0]=join('',<FILE>);

oder so:
Code (perl): (dl )
1
2
3
4
{
  local $/='';
  $test[0]=<FILE>;
}
renee
 2007-01-20 12:15
#73371 #73371
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
while(defined(my $i = <FILE>))
Das defined braucht man nicht, das macht Perl von selbst...
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/
<< >> 5 Einträge, 1 Seite



View all threads created 2007-01-20 11:10.