Thread Teile eines Arrays nach Parameterübergabe undef (5 answers)
Opened by bianca at 2016-06-18 10:42

bianca
 2016-06-18 10:42
#184948 #184948
User since
2009-09-13
6977 Artikel
BenutzerIn

user image
Guten Tag Allerseits!

Bin gerade sehr zeitraubend gestolpert.
Folgender Code in Strawberry Perl 5.18.4:
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;
local $Data::Dumper::Purity;
$Data::Dumper::Purity = 1;
local $Data::Dumper::Useqq;
$Data::Dumper::Useqq = 1;
local $Data::Dumper::Sortkeys;
$Data::Dumper::Sortkeys = sub {
    my ($hash) = @_;
    return [(sort {lc $a cmp lc $b} keys %$hash)];
};
use 5.010;

my $test = sub {
    my ($teile) = @_;
    say Dumper($teile);
    say "in der sub: ".join('/',@{$teile->[0..scalar(@$teile) - 2]});
};
my @teile = split(/[\\\/]/,'http://www.....');
say "ausserhalb: ".join('/',@teile[0..scalar(@teile) - 2]);
$test->(\@teile);


wirft:
Quote
ausserhalb: http:/
$VAR1 = [
"http:",
"",
"www....."
];

Use of uninitialized value $. in range (or flip) at test.pl line 19.
Can't use string ("") as an ARRAY ref while "strict refs" in use at test.pl line 19.

Ganz unabhängig vom Inhaltlichen Sinn und Unsinn trotzdem die Frage: warum ist das leere Array Teil außerhalb leer und nach Übergabe der Referenz auf das Array in eine sub plötzlich undef? Ist das normal und immer so? Warum? Ich ging bisher davon aus, dass sich gerade bei Übergabe einer Referenz der Inhalt nicht ändert.
10 print "Hallo"
20 goto 10

View full thread Teile eines Arrays nach Parameterübergabe undef