The reason you're not getting any output here is that you never call your sub, "egal ()" in xyz.pl. You could have learned this with judicious insertion of (debugging) print statements (to test the content/existence of the vars in your sub) or running the script in the deugger, >perl -d 848064_xyz.pl 'egal("20090316","7006")'/p>
Further, if you are trying to ensure that egal() gets called, leaving it out of the command line invocation makes no difference.
If you insert a line 26, "egal($param); # call the sub!", your script will (try to) execute the sub (and as far as printing the plus signs); the balance of your problem (your regex usage) is left as an exercise for the OP.
Stock advice (you were going to get it sooner or later, even though it's not the root of your problem here): It's often a mistake to omit use strict and warnings which would have told you that your barewords, "true" and "false" (lines 17 & 21) might be a problem. But that's a generic problem and bit of advice. Use strict and warnings to help you uncover common problems, albeit, not the real problem here.