AndreasW: Seltsames Verhalten bei Parameterübergabe

Beitrag lesen

Hallo,

ich habe ein kleines Problem mit regulären Ausdrücken und einer Perl-Funktion.
Hier ist der extrahierte, auf das notwendigste reduzierte Code:

sub myfunction
{
my $line = $_[1];
my $cnt = 0;
while ($cnt < ($_[0]))
{
print $cnt;
print " ";
print $_[$cnt + 2];
print "\n";
}
return $line;
}

while (<>)
{
$myline = "sometext";

if (m/SOMETHING\("(.\*)",(.\*)\)/)  
{  

$dummy = $2;
  $line = myfunction(2,$myline,$1,$dummy);
}
}

aufgerufen  mit Eingabezeile:
SOMETHING("blabla",laber)

ergibt als Ausgabe
0 blabla
1 laber

Ersetze ich im Funktionsaufruf aber $dummy durch $2, erhalte ich als Ausgabe
d.h.
if (m/SOMETHING("(.*)",(.*))/)
{
  $line = myfunction(2,$myline,$1,$dummy);
}
  
bekomme ich als Ausgabe

0 blabla
1

d.h. der letzte Parameter kommt nicht mehr bei der Funktion an.

Ist da irgendwo ein Denkfehler bei mir?

Andreas