sub mutate { my (@m, $s, $w); while($s = pop@_) { if($s =~ /\[(.*?)\]/) { push @_, map { ($w = $s) =~ s/\[.*?\]/$_/; $w } split '\|', $1; } else { push @m, $s; } } return \@m; }
меня уже поправили (с pre)
Date: 2007-03-22 09:11 am (UTC)sub mutate { my (@m, $s, $w); while($s = pop@_) { if($s =~ /\[(.*?)\]/) { push @_, map { ($w = $s) =~ s/\[.*?\]/$_/; $w } split '\|', $1; } else { push @m, $s; } } return \@m; }