To be clear, all the code works well in that it does everything it is supposed to do consistently and within an acceptable time.
Well, now-a-days program-testing is the judge for whether a program does what it is supposed to do. I am absolutely sure that in X years from now, what we today know as program testing will be frowned upon but until that time comes you probably must create hundreds of test-scripts to test the behaviour of your scripts under all real-world/user-input/network-state conditions. Did he enter X/Network failed/Sun collapsed? ooohhh I should have caught that. Bummer, test failed, back to the drawing room.
Secondly, a program without use strict; will swallow a lot of bad behaviour and (Perl will) substitute with default actions. And two wrongs in this case can make a "good" or "pass" ... And this is a ticking bomb ready to explode...
If your code is good, then adding use strict; should have no effect on its output, right?