Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12972[/thread]

Probleme mit Tie::File

Leser: 2


<< >> 8 Einträge, 1 Seite
Vermillion
 2009-01-09 12:44
#117781 #117781
User since
2008-07-18
24 Artikel
BenutzerIn
[default_avatar]
Hab mir grad ein kleines Programm geschrieben, dass Satzteile aus 4 Dateien holt und daraus einen "Satz" bzw. einen Ausdruck machen soll. Hab dazu Tie::File benutzt. Ich führe das Programm im Moment unter Windows aus. Bekomme folgende Fehlermeldung:

Code: (dl )
1
2
Scalar Value @first better written as $second
use of uninitalized value within @first in print

(Die Fehlermeldung bekomme ich für alle Arrays)

Wenn ich aus @first einen Skalar mache funktioniert Tie::File nichtmehr. @first müsste ja eigentlich beim einlesen der Datei mit Tie::File initialisiert werden. Schliesslich bekomme ich ja keine Meldung, dass die Datei nicht geöffnet werden konnte. Was habe ich falsch gemacht?

Hier der Code:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use strict;
use warnings;
use List::Util 'shuffle';
use Tie::File;

my @first;
my @second;
my @third;
my @fourth;

tie @first, 'Tie::File', "first.txt" or die "Can not open file 1!";
@first=shuffle(@first);

tie @second, 'Tie::File', "second.txt" or die "Can not open file 2!";
@second=shuffle(@second);

tie @third, 'Tie::File', "third.txt" or die "Can not open file 3!";
@third=shuffle(@third);

tie @fourth, 'Tie::File', "first.txt" or die "Can not open file 4!";
@fourth=shuffle(@fourth);

print @first[0];
print " ";
print @second[0];
print " ";
print @third[0];
print " ";
print @fourth[0];
nepos
 2009-01-09 12:46
#117782 #117782
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Beim Zugriff auf ein Array-Element musst du $first[0] schreiben. Damit ist die erste Warning schon mal erledigt.
Vermillion
 2009-01-09 13:09
#117785 #117785
User since
2008-07-18
24 Artikel
BenutzerIn
[default_avatar]
Danke... Der Zweite Fehler liegt wohl daran, dass garnichts in meinem Array steht.

Hab jetzt, wie im Beispiel in der Übersicht, die Zeilen gezählt und ich komme bei allen Arrays auf Null.
Dubu
 2009-01-15 16:55
#118024 #118024
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Das sollte prinzipiell funktionieren. Ein Fehler ist aber wohl, dass "first.txt" zweimal gebunden wird, einmal an @first und einmal an @fourth. Mein Tie::File zumindest kommt damit klar, das mag aber von der Version abhaengen.

Ich gehe auch davon aus, dass dir bewusst ist, dass mit den shuffle()-Zuweisungen die Dateien auf der Platte geaendert werden! Ich weiss auch nicht, wie effizient ist das ist, sowohl bzgl. Rechenzeit als auch Speicher. Irgendwo muessen die Daten ja vor dem Schreiben zwischengespeichert werden. Jemand Lust zu testen?
pq
 2009-01-15 18:29
#118037 #118037
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Vermillion+2009-01-09 11:44:21--
Code: (dl )
Scalar Value @first better written as $second

das kauf ich dir jetzt nicht ab =)
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
Vermillion
 2009-01-16 16:03
#118093 #118093
User since
2008-07-18
24 Artikel
BenutzerIn
[default_avatar]
Wenn die Dateien auch auf der Platte geändert werden ist das nicht so schlimm (sind ja nur etwa 20-30 Wörter die sowieso einfach irgendwie in dem Textfile stehen).

Aber ja ich verstehe was du meinst. Ist natürlich nicht gerade optimal wenn ich jedesmal die Textdatei mit umstelle wenn es reichen würde das Array zu mischen.

Ich benutze die neueste Version 0.96 welche benutzt du denn?

pq
das kauf ich dir jetzt nicht ab =)


Da hab ich wohl nicht aufgepasst beim zusammenkopieren =)
Dubu
 2009-01-17 15:09
#118124 #118124
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Hier laeuft 0.97_02 (Perl 5.10.0).

Hast du den Fehler mit @fourth, ... "first.txt", ... beseitigt?
Oder sollte das gar Absicht gewesen sein?
Gast Gast
 2009-01-19 10:29
#118156 #118156
Nein war keine Absicht. Ja hab den Fehler beseitigt.

Werde mir heute mal die Version 0.97_02 herunterladen. Mal sehen ob das was bringt.
<< >> 8 Einträge, 1 Seite



View all threads created 2009-01-09 12:44.