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

renee
 2011-02-11 12:04
#145583 #145583
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
2011-02-11T10:53:53 kajax01
Vlt die eine oder andere Frage an @topeg:
Ich bin zwar nicht topeg, aber ich erlaube mir trotzdem, die Fragen zu beantworten ;-)
2011-02-11T10:53:53 kajax01
a) was bedeutet eigentlich die -1 bei

push(@{$matrix[-1]},"A")?


Man kann auch mit negativem Index auf Arrays zugreifen. Dann fängt man eben "von hinten" an.

my @array = (1,2,3,4);
$array[0] ist 1
...
$array[3] ist 4

$array[-1] ist 4
...
$array[-4] ist 1

2011-02-11T10:53:53 kajax01
b) wenn ich den print cmd benutze,

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

bringt er die msg:

Array found where operator expected at arr1.pl line 14, near "', ' "


"join" erwartet als ersten Parameter einen String, mit dem die nachfolgenden Parameter zusammengefügt werden sollen. Parameter trennt man mit ",".

also join($string, $param1, $param2 ); oder join( $string, @array );

', ' ist Dein String, also muss es join( ', ', @$_ ) heißen.

2011-02-11T10:53:53 kajax01
Was bedeutet genau dieses @$_ ?


$_ ist die Laufvariable der for-Schleife.

Code (perl): (dl )
1
2
3
for ( 1,2,3,4 ) {
    print $_; # im ersten Durchlauf ist $_ 1, im zweiten 2, ...
}




Da @matrix aber ein "mehrdimensionales Array" ist, sieht es so aus

Code: (dl )
1
2
3
4
@matrix = (
[ 'elem1', 'elem2' ],
[ 'elem3', 'elem4' ],
);


Jedes Element des Arrays @matrix ist eine Referenz auf ein Array.

Mit @$_ dereferenzierst Du die Arrayreferenz, die in $_ steckt.

Zum Thema Referenzen würde ich Dir empfehlen, diesen Wiki:Artikel zu lesen.
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/

View full thread matrix in loop aufbauen mit Referenzen als zeilen