func2(func1(input1, input2), input3) #### func1(input1, func2(input2, input3)) #### while (<>) { $line = $_; $line =~ s/func1\((.*?)\)/proc1{$1}/g; $line =~ s/func2\((.*?)\)/FUNC $1 END/g; $line =~ s/{/(/g; $line =~ s/}/)/g; print $line; } #### proc1(input1, FUNC input2, input3) END FUNC input1, proc1(input2, input3) END #### proc1(input1, FUNC input2, input3 END) FUNC input1, proc1(input2, input3) END