in reply to Peeling the Peelings
But it's actually about 10% slower than the original. Go figure.sub prop3 { my $str = shift; my $level = shift || 0; return $str unless $level; # 3rd update my @str = split(/[()]/, $str); splice @str, 0, $level; my $out = join('(', @str); $out .= ')' x ( @str - 1 ); return $out; }
3rd update: line commented w/ '3rd update' in my first routine makes it closer to the same speed as the OP's original.sub getpropstr { local $_ = shift; my $level = shift || 0; if ( $level == -1 ) { /([^()]+)\)+$/; return $1 } while ( $level-- > 0) { chop; s/^[^(]+\(//; } return $_; }
|
|---|