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

array daten in file schreiben: geschrieben wird leider nur die 1 zeile

Leser: 1


<< |< 1 2 >| >> 16 Einträge, 2 Seiten
Rambo
 2005-03-09 00:21
#52443 #52443
User since
2003-08-14
803 Artikel
BenutzerIn

user image
hallo,

ich habe in einem array viele daten drin, nun möchte ich diese
daten in eine datei speichern
Code: (dl )
1
2
3
open(IN, ">data.txt") or die $!;
print @array IN ,"\n";
close IN;

wenn ich das so mache wird aus dem array nur die
erste zeile in die datei geschrieben! warum?

fürti rambo
coax
 2005-03-09 01:14
#52444 #52444
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
Hi.

Code: (dl )
print @array IN ,"\n";


Du vertauscht da was, die Syntax fuer print lautet: print DATEIHANDLE LISTE
also
Code: (dl )
print IN @array, "\n";
 bzw.  
Code: (dl )
print IN join "\n", @array;
 wenn du an jedes Element den Zeilenumbruch haengen willst.
,,Das perlt aber heute wieder...'' -- Dittsche
Relais
 2005-03-09 12:07
#52445 #52445
User since
2003-08-06
2244 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=coax,09.03.2005, 00:14]
Code: (dl )
print IN join "\n", @array;
wenn du an jedes Element den Zeilenumbruch haengen willst.[/quote]
Code: (dl )
print IN join( "\n", @array, "" );

wenn auch das letzte Element noch mit einem Zeilenumbruch bedacht werden soll.
Erst denken, dann posten --
26. Deutscher Perl- u. Raku -Workshop 15. bis 17.04.2024 in Frankfurt/M.

Winter is Coming
Rambo
 2005-03-09 16:03
#52446 #52446
User since
2003-08-14
803 Artikel
BenutzerIn

user image
sorry hab beim abschreiben auf dem anderen pc ein fehler
gemacht, das "\n" benötige ich nicht!
habe jetzt folgendes versucht aber mit gleichem ergebnis

print IN join @array; #datei ist ohne inhalt
print IN @array; #datei hat die erste zeile statt vielen
print IN join(@array, "" ); #datei ist ohne inhalt

irgendwie seltsam.
renee
 2005-03-09 16:07
#52447 #52447
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
mach mal
Code: (dl )
print IN join("",@array);


perldoc -f join
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/
Rambo
 2005-03-09 16:17
#52448 #52448
User since
2003-08-14
803 Artikel
BenutzerIn

user image
da kommt auch nur die erste zeile statt vielen.
wenn ich das @array vorher mit "print @array" anschaue
ist noch alles ok aber in der data.txt steht nur die erste zeile
drin.
wenn ich es so simuliere geht es ja auch
Code: (dl )
1
2
3
4
5
my @array = (<DATA>);

open(IN, ">data.txt") or die $!;
print IN @array;
close IN;

unter kopiere ich dann immer die daten aus der console rein!
und dann ist die data.txt kommplet gefüllt.
mach ich hier was verkehrt oder ist der denkansatz nicht richtig?\n\n

<!--EDIT|Rambo|1110378006-->
pq
 2005-03-09 16:43
#52449 #52449
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
wenn du print IN join @array; machst, ist klar, dass nichts geschrieben wird.
es ist dasselbe wie print IN scalar @array, (); =
print IN join 1, ();
wenn print IN @array nur eine zeile schreibt, dann ist auch nur eine
zeile in @array. der fehler liegt dann natürlich in der füllung von array.
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
Rambo
 2005-03-09 17:33
#52450 #52450
User since
2003-08-14
803 Artikel
BenutzerIn

user image
das array ist doch aber mit daten gefüllt
Code: (dl )
1
2
3
4
print @array;
open(IN, ">data.txt") or die $!;
print IN @array;
close IN;

wenn ich mir hier die ausgabe von print @array auf der console
anschaue dann sind dort jede menge daten auf der console zu
sehen aber nicht in der datei!
oder habe ich dich falsch verstanden?
pq
 2005-03-09 19:00
#52451 #52451
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
na dann hast du einen bug in perl gefunden.
Code: (dl )
1
2
3
4
5
6
7
8
9
$ perl -wle'my @a = qw(a b c d);
open IN, ">data.txt" or die $!;
print @a;
print IN @a;
close IN;
'
abcd
$ cat data.txt
abcd

so sieht es bei mir aus (5.8.3 linux), ist also ok. welche version, OS, hast du?
am besten, du benutzt das perlbug programm, um den bug zu melden.
aber schau vorher nach, ob es nicht schon behoben wurde in einer
neueren version.
und du solltest das ganze natürlich in ein kleines, den fehler reproduzierendes
skript umwandeln.\n\n

<!--EDIT|pq|1110387700-->
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
Rambo
 2005-03-09 19:28
#52452 #52452
User since
2003-08-14
803 Artikel
BenutzerIn

user image
danke für die infos aber ich wollte keinen bug finden dacht
nur ich bau selber welche :-)

ich benutze W2K prof, Perl 5.8.6 Build 811
werde mal schauen wie ich ein test script mache und
das dann hier mal posten damit es andere evtl. testen können

fürti rambo
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2005-03-09 00:21.