PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 3 D array derefferenzieren in perl



newton
21-08-2005, 22:18
Hi,

ich moechte in perl ein 3D array an eine funktion uebergeben, und dann dort auf die elemente zugreifen, moeglichst in der Form $array[$x][$y][$z].
Dazu uebergebe ich eine referenz an die funktion:
function \@array;
wenn ich dann aber in der funktion dereferenziere
@new_array=@$ref;
kann ich maximal auf einen index zugreifen, also
$new_array[$x];
und nicht
$new_array[$x][$y][$z]
weil dann meckert der interpreter ueber meine syntax bei "]["

wie kann ich auf die 3D Struktur zugreifen in meiner funktion?

Gruss :)
newton

michael.sprick
22-08-2005, 00:14
Also derefenzieren von Arrayreferenzen machst Du mit


@Array = @{$ArrayRef};


Aber eigentlich kannst Du Dir den Schritt sparen... Du kannst ja auch mit Referenz arbeiten ($ArrayRef->[0][0][0]):




#!/usr/bin/perl

use strict;
use warnings;
sub Ausgabe($);


my @Array = ( [['1aa','1ab','1ac'],['1ba','1bb','1bc'],['1ca','1cb','1cc']],
[['2aa','2ab','2ac'],['2ba','2bb','2bc'],['2ca','2cb','2cc']],
[['3aa','3ab','3ac'],['3ba','3bb','3bc'],['3ca','3cb','3cc']],
[['4aa','4ab','4ac'],['4ba','4bb','4bc'],['4ca','4cb','4cc']]
);

Ausgabe(\@Array);

sub Ausgabe($)
{
my $ArrayRef = shift(@_);
print $ArrayRef->[2][2][2];
#oder
my @Array = @{$ArrayRef};
print $Array[2][2][2];
}

newton
22-08-2005, 08:26
Ahh super!!
mit Referenz arbeiten funktioniert.
Vielen Dank!

newton :)