Schrift
[thread]283[/thread]

perl und multidimensional arrays



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
Gast Gast
 2004-06-06 14:16
#2719 #2719
hallo,

ich teste schon ziemlich herum (bin aber eigentlich PHP bereich tätig :))
warum funktioniert folgender code nicht so, wie ich will?
in der .txt stehen daten mit tab getrennt (\s stimmt schon) -> dh: die daten kommen richtig mit split raus -> in ein array schreiben geht auch gut.
aber nun will ich es 2 dimensional dh: jede zeile (array) soll in ein array.
ich hoffe ihr versteht was ich meine...

Code: (dl )
1
2
3
4
5
6
7
8
9
open (FILE,"datei.txt");
$i=0;
foreach $row (<FILE>) {
$file->[$i] = \split(/\s/,$row);
$i++;
}

print Dumper($file);
close(FILE);


danke für eure hilfe im voraus!

PS: perl ist strange :)
renee
 2004-06-06 14:37
#2720 #2720
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
open (FILE,"<datei.txt");
my @file = ();
while(my $row = <FILE>) {
 push(@file,[split(/\s/,$row)]);
}
close(FILE);
print Dumper(\@file);


PS: Perl macht Spaß!\n\n

<!--EDIT|renee|1086518279-->
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/
hephaistos
 2004-06-06 14:51
#2721 #2721
User since
2004-06-06
9 Artikel
BenutzerIn
[default_avatar]
[quote=renee,06.06.2004, 12:37][/quote]
hallo!

danke!
aber print Dumper($file) geht nicht, da muss doch @file hin oder?

naja, perl - wers mag :) regex sind cool, aber der rest naja....

ciao
[E|B]
 2004-06-06 16:21
#2722 #2722
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Du musst zuerst am Anfang des Scripts Data::Dumper laden:

Code: (dl )
use Data::Dumper;


Dan funtzt auch Dumper. ;)
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
hephaistos
 2004-06-06 16:32
#2723 #2723
User since
2004-06-06
9 Artikel
BenutzerIn
[default_avatar]
ja, der hat eh funktioniert - wieso sagst du das?

print Dumper($file) -> geht nicht, da gehört print Dumper(@file) hin.

ciao
renee
 2004-06-06 16:41
#2724 #2724
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
der Fehler ist mir leider erst aufgefallen, als ich den Beitrag gesendet hatte... Konnte ja nicht wissen, dass Du so schnell den Beitrag liest ;)

besser ist es, wenn Du \@file dumpst (statt @file)...
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/
hephaistos
 2004-06-06 17:23
#2725 #2725
User since
2004-06-06
9 Artikel
BenutzerIn
[default_avatar]
ahja \@array ist eine referenz oder?

eine frage noch :)

wie lese ich nun dieses 2D array aus?

dh: 2 verschachtelte for(each) schleifen.
Code: (dl )
1
2
3
4
5
foreach @a ( @original ) {
foreach $b ( @a ) {
print $b;
}
}

dh: das @a ist ein array, aber mit @a darf ich die foreach nicht schreiben... gibts auch da wieder einen "push" trick?

danke im voraus!
hephaistos
 2004-06-06 17:46
#2726 #2726
User since
2004-06-06
9 Artikel
BenutzerIn
[default_avatar]
aha - jetzt verstehe ich :)

foreach $a ( @array ) {
print $a ---> zeigt, dass es ein array ist
dann kann ich mit $a->[index] zugreifen.

ok, das verstehe ich jetzt. stimmt doch so oder? gibts da eine "elegante" lösung?

danke,
ciao
hephaistos
 2004-06-06 19:12
#2727 #2727
User since
2004-06-06
9 Artikel
BenutzerIn
[default_avatar]
arhhhhh da freut man sich - und es funktioniert doch nicht :(

bitte kann mir einer sagen, wie ich dieses 2D array auslesen kann? dynamisch natürlich... dh: ich weiß nicht, wieviele einträge es hat.

danke im voraus!

ciao
hephaistos
 2004-06-06 19:24
#2728 #2728
User since
2004-06-06
9 Artikel
BenutzerIn
[default_avatar]
seid mir wirklich nicht böse, aber perl ist wirklich ein "hund" :)
foreach my $a ( @original ) {
foreach my $b ( @$a ) {
print $b;
}
}
----> @$a is ja wohl der hammer oder?

naja, jetzt gehts und ich verstehs :)

thx
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2004-06-06 14:16.