#!/usr/bin/perl -w use strict; print doFunc("MAIN", "B(1)+C(2)") . "\n"; sub doFunc { my ($theFunc, $rem) = @_; my $re = &get_re($rem); $rem =~ s/(\w+)\(($re)\)/&doFunc($1,$2)/eog; return "func $theFunc returns <$rem>"; } ## ### When we're called with the initial ### state, return "1|2". Otherwise, return ### our input, quotemeta'd. ### sub get_re { my ($in) = @_; if ($in eq "B(1)+C(2)") { return '1|2'; } else { return quotemeta ($in); } } exit (0);