#!/usr/bin/perl
use strict;
use warnings;

my $text = "{value1}+{value2}-{value3}*{value...n}";

if ($text =~ /\A ({ [^{}]* }) (?: [\/+*-] (?1))* \z/x) {
    while($text =~ / { [^{}]* } | [\/+*-] /gx) {
        print "$&\n";
    }
}
