in reply to why cann't $@ output the eval error in this case?
Please show the actual code you're running (you don't print $@ anywhere in your code, and there's no line 48 in the short snippet you've shown), what you get and also what you expect.