Do not use & when calling subroutines! Did you know &foo; doesn't call the foo subroutine without parameters, but rather calls it with the current parameter array @_? I bet not. Just drop the &.
a here-doc has to end with the terminator you specified at the beginning. So if there was print <<"HTML"; at the begging, there must be HTML at the end. If there was print <<"END_OF_PRINT"; at the beginning, there would have to be END_OF_PRINT at the end.
Please do not use the cgi-lib compatibility functions in new scripts. You should not know anything like that exists.
.
Jenda Enoch was right!
Enjoy the last years of Rome.
Comment on Re: i got error cannot find string terminator "HTML" anywhere before EOF