Thread array reference+2 (13 answers)
Opened by Graf Herschel at 2015-12-28 14:36

topeg
 2015-12-29 11:47
#183296 #183296
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Arrays in Perl sind zum einen dynamisch nicht statisch. Zum anderen bestehen sie nicht wie in C einfach aus einem Binärstring mit einem eindeutigen Trenner. Perl Arrays müssen nämlich auch mit "\0" in Strings und mit Refenzen klar kommen. Darum besteht ein Array in Perl aus einer verketteten Liste aus structs. Jedes struct enthält eine Referenz auf den eigentlichen Datensatz, Das macht z.B. Baumstrukturen möglich und vereinfacht sort, shift, push, slice usw.

Wenn dir wirklich so viel so viel an statischen Arrays liegt, dann musst du es dir selber mit Inline-C Implementieren, oder CPAN:Data::Alias verwenden:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use Data::Alias;

sub foo($) {
  my $array = shift;
  $array->[0]='3';
  $array->[1]='4';
  unshift(@$array,'<<<');
  push(@$array,'>>>');

  print Dumper($array);
}

my @array = qw(eins zwei drei vier);

print Dumper(\@array);

foo alias [ @array[2 .. $#array] ] ;

print Dumper(\@array);

Last edited: 2015-12-29 11:50:01 +0100 (CET)

View full thread array reference+2