Thread matrix in loop aufbauen mit Referenzen als zeilen (7 answers)
Opened by kajax01 at 2011-02-09 20:29

topeg
 2011-02-10 06:03
#145536 #145536
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Es gibt mehrere Möglichkeiten Zweidimensionale Arrays (Matrizen) zu erzeugen.
Jedes hat seine Vorzüge.

Wichtig dabei sind dabei das wissen um zwei Dinge.
Man muss wissen was Referenzen sind und was
Autovivikation ist.

Refenzen sind Verweise auf Variablen und Autovivikation das ist die Fähigkeit von perl Referenzen selbständig zu erzeugen wenn sie benötigt werden und noch nicht existieren.

Siehe dazu auch Wiki:perlreftut Wiki:perlref

Anhand von Beispielen:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl
use strict;
use warnings;

my @matrix;
for(1..5)
{
  push(@matrix,[]);
  for(1..5)
  {
    push(@{$matrix[-1]},"A")
  }
}

# Ausgabe:
print join(', ', @$_), "\n" for(@matrix);


oder:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl
use strict;
use warnings;

my @matrix;
my $count_down=5;
while($count_down>0)
{
  push(@matrix,[split(/,/,'A,A,A,A,A')]);
  $count_down--;
}

# Ausgabe:
print join(', ', @$_), "\n" for(@matrix);


oder

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl
use strict;
use warnings;

my @matrix;
for my $y (0..4)
{
  formy $x (0..4)
  {
    $matrix[$y][$x]='A';
  }
}

# Ausgabe:
print join(', ', @$_), "\n" for(@matrix);


oder

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl
use strict;
use warnings;

my @matrix;
my $count=0;
while($count<5)
{
  my @zeile=split(/,/, 'A,A,A,A,A');
  $matrix[$count]=\@zeile;
  $count++;
}

# Ausgabe:
print join(', ', @$_), "\n" for(@matrix);


EDIT: Danke für den Hinweis. Fehlende Kommata ergänzt.
Last edited: 2011-02-12 06:21:52 +0100 (CET)

View full thread matrix in loop aufbauen mit Referenzen als zeilen