There are many ways you can accomplish this. To name a few:
addme.pl doesn't output any error messages.
Instead, it just exits with a particular value. signup.pl captures the exit code, and uses a lookup
table to see what happened.
You'd use IPC::Open3 to open addme.pl,
and read from its standard error what the error is.