This may be a slightly evil solution, especially if you don't have a lot of control over where your input comes from, but I like to let perl do the work:
sub lpcarray_to_array {
my $lpc = shift;
$lpc =~ s/\(\{/\[/g;
$lpc =~ s/\}\)/\]/g;
return eval $lpc;
}
I must admit I haven't taken the time to examine your code (boss skulking around), but the layout of your lpc-array looked eerily like a plain perl anonymous array, except for brace-style. Maybe my function combined with some input validation can give you an elegant solution...