- 论坛徽章:
- 0
|
5可用积分
不是很完美,求高手完美化:- #!/usr/bin/perl
- # dynamic regexp
- my $levelN;
- $levelN = qr/ (?> [^()]+ | \( (??{ $levelN }) \) )* /x;
- # open file, do the replacement and print to screen.
- if(open(FH,@ARGV[0])){
- while(){
- my $line=$_;
- my $line1=$line;
- while(1){
- $line1=~ s/(\($levelN\))\s*\^\s*(\($levelN\))/pow($1,$2)/g; #(a+b)^(c+d)
- if("$line1" eq "$line"){last;}
- $line=$line1;
- }
- while(1){
- $line1=~ s/(\w*\.*\w*)\s*\^\s*(\($levelN\))/pow($1,$2)/g; #a^(b+c)
- if("$line1" eq "$line"){last;}
- $line=$line1;
- }
- while(1){
- $line1=~ s/(\($levelN\))\s*\^\s*(\w*\.*\w*)/pow($1,$2)/g; #(a+b)^c
- if("$line1" eq "$line"){last;}
- $line=$line1;
- }
- while(1){
- $line1=~ s/(\w*\.*\w*)\s*\^\s*(\w*\.*\w)/pow($1,$2)/g; #a^b
- if("$line1" eq "$line"){last;}
- $line=$line1;
- }
- print "$line1"
- }
- close(FH);
- }
- else{
- print "Error: Open FILE '@ARGV[0]' fail!\n"
- }
复制代码 |
最佳答案
查看完整内容
{:2_169:}不完美,求高手完美化:old a = 1 ^ 2 ^ 3 * 2^3^4new a = pow(1, pow(2, 3)) * pow(2, pow(3, 4))old # There is no pownew # There is no powold b = 3 ^5 + 1 ^ 3 ^ 5 + 2 ^ 3new b = pow(3, 5) + pow(1, pow(3, 5) + pow(2, 3))old c = 1 ^(2+3)^2 + 1^(2^3+1)new c = pow(1, pow((2+3), 2) + pow(1, (pow(2, 3)+1)))
|