Você precisa distinguir entre os erros que o curl vê e os erros que o seu servidor http está retornando. Estes últimos não são erros de ondulação. No entanto, você pode inspecionar facilmente o código de status http, adicionando ao seu curl a opção
-w '\n%{http_code}\n'
Isso será anexado ao stdout do cabeçalho HTTP, que é 200 para OK. Então o seu perl pode fazer algo parecido com
my $curl_result = 'curl -s -S -w '\n%{http_code}\n' ... 2>/dev/null';
my @lines = split(/\n/,$curl_result);
my $httpcode = $lines[-1];
if($httpcode eq 200){ print "ok\n"; }
else{ print "error\n"; }