Yes, you've got it. That's why I said system is odd. Most Perl functions return something that works in a boolean test (open ... or die), but not system. It uses the Unix shell behavior (all shells do this not just bash). So you have to reverse the sense of the test at very least. Really, you should know what the failure codes are and handle them as cases, as shown in
another response.
Phil