perlfuncのsystemやdoのエラーの扱い

どうも5.8.4あたりから徐々に変わってるぽい。過去のコードで$!を読むタイミングが早すぎたりすると、今までは動いていたものが動かなくなる場合にちらほら遭遇する。どう書けばいいかは perldoc -f system や perldoc -f do に書いてあるんだけど、問題は過去のコードとの格闘だな。。