Thread seltsame Methodenparameter mit MooseX::Declare (5 answers)
Opened by lichtkind at 2013-09-11 18:17

pq
 2013-09-11 18:39
#170125 #170125
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
das ist eine kleine falle =)
bei jedem weiteren erfolgreichen match mit captures wird $1 neu gesetzt. bevor du den parameter aus @_ herausholst, ist es ein alias auf $1.
ich vermute, das modul macht da irgendeine regex in der sub, bevor dein code aufgerufen wird.
dasselbe kannst du aber auch mit einer beliebigen variable $x nachstellen, die du in der sub am anfang veränderst, wenn diese in der sub gültig ist.

beispiel:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
perl -wE'
"test" =~ m/(e)/; # $1 = e
foo($1);

sub foo {
"bla" =~ m/(a)/; $1 = a
my ($param) = @_;
say $param;
}


my $x = 23;
bar($x);

sub bar {
$x++;
my ($param) = @_;
say $param;
}
'
a
24

mit der übergabe von "$1" wird ein neuer string erzeugt, und der hat keinen bezug mehr zu $1.
Last edited: 2013-09-11 18:40:39 +0200 (CEST)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread seltsame Methodenparameter mit MooseX::Declare