So ich hab ein Problem mit dem ich nicht vorankomme..Also
Die sub wird mit create_plattform(\@invar_plattforms, \$1, \@lines_structure_plattform) aufgerufen, wobei das erste ein array mit verschiedenen Typen ist, das zweite eine betsimmt folge vonm Leerzeichen und das dritte ein Textfile mit den Zeilen im Array.
Das was nicht funktioniert ist folgendes:
Das $$ref0[$i] im regulären Ausdruck wird IMMER, auch nachdem i hochgezählt wurde immer mit dem $$ref0[0] ersetzt. Wenn ich in der selben Zeile mir i ausgeben lasse bekomme ich die korrekte Zahl - im regulären Asudruck wird immer 0 (bzw die Startnummer my $i = 0) verwendet..
Warum?? Für mich sieht das so aus als würde das einmal ersetzt werden und dann irgendwie aus dem Chache kommen oder so.. nur wie schalte ich das ab?
Das zweite komische Problem ist, wenn ich statt $leerzeichen innerhalb der foreach schleifen $$ref1 verwenden, bekomme ich im ersten Durchgang der äußeren Foreach folgenden Fehler:
Use of uninitialized value in concatenation (.) or string at h:\My Documents\UPC
4PVCS\UPC4PVCS_structure-builder.pl line 30.
In den darauffolgenden Durchgängen kommt kein Fehler. Woran liegt das?
Hier mal der Code:
sub create_plattform
{
my @return;
my $tmp;
my $tmp2;
my $tmp3;
my $ref0;
my $ref1;
my $ref2;
my $i = 0;
$ref0 = $_[0];
$ref1 = $_[1];
$ref2 = $_[2];
my $leerzeichen;
$leerzeichen .= $$ref1;
foreach $tmp (@$ref0)
{
foreach $tmp2 (@$ref2)
{
$tmp2 =~ s/#PLATTFORM#/$$ref0[$i]/;
push(@return, "$leerzeichen$tmp2");
}
$i++;
}
return @return;
}
Datum: 04.05.2005-12:02
