in reply to CGI to redirect using sessions

Your script does not contain

use strict; use warnings;

If that's what the examples you followed led to, you may have followed the wrong PM examples!

If you do add strict and uncomment warnings, your script outputs this:

Variable "$cookie" is not imported at ./foo line 51. (Did you mean &cookie instead?) Variable "$cookie" is not imported at ./foo line 56. (Did you mean &cookie instead?) Variable "$cookie" is not imported at ./foo line 63. (Did you mean &cookie instead?) Variable "$cookie" is not imported at ./foo line 67. (Did you mean &cookie instead?) Global symbol "$query" requires explicit package name at ./foo line 15 +. Global symbol "$perror" requires explicit package name at ./foo line 1 +7. Global symbol "$wearelooping" requires explicit package name at ./foo +line 18. Global symbol "$redirectURL" requires explicit package name at ./foo l +ine 19. Global symbol "$gotcookies" requires explicit package name at ./foo li +ne 23. Global symbol "$env" requires explicit package name at ./foo line 24. Global symbol "$query" requires explicit package name at ./foo line 24 +. Global symbol "$resumepath" requires explicit package name at ./foo li +ne 25. Global symbol "$query" requires explicit package name at ./foo line 25 +. Global symbol "$env" requires explicit package name at ./foo line 30. Global symbol "$redirectURL" requires explicit package name at ./foo l +ine 30. Global symbol "$resumepath" requires explicit package name at ./foo li +ne 34. Global symbol "$redirectURL" requires explicit package name at ./foo l +ine 34. Global symbol "$resumepath" requires explicit package name at ./foo li +ne 34. Global symbol "$perror" requires explicit package name at ./foo line 3 +5. Global symbol "$gotcookies" requires explicit package name at ./foo li +ne 41. Global symbol "$perror" requires explicit package name at ./foo line 4 +1. Global symbol "$gotcookies" requires explicit package name at ./foo li +ne 44. Global symbol "$wearelooping" requires explicit package name at ./foo +line 44. Global symbol "$wearelooping" requires explicit package name at ./foo +line 50. Global symbol "$perror" requires explicit package name at ./foo line 5 +0. Global symbol "$cookie" requires explicit package name at ./foo line 5 +1. Global symbol "$query" requires explicit package name at ./foo line 51 +. Global symbol "$query" requires explicit package name at ./foo line 55 +. Global symbol "$cookie" requires explicit package name at ./foo line 5 +6. Global symbol "$redirectURL" requires explicit package name at ./foo l +ine 57. Global symbol "$query" requires explicit package name at ./foo line 58 +. Global symbol "$query" requires explicit package name at ./foo line 60 +. Global symbol "$cookie" requires explicit package name at ./foo line 6 +3. Global symbol "$query" requires explicit package name at ./foo line 63 +. Global symbol "$query" requires explicit package name at ./foo line 67 +. Global symbol "$cookie" requires explicit package name at ./foo line 6 +7. Global symbol "$query" requires explicit package name at ./foo line 68 +. Global symbol "$query" requires explicit package name at ./foo line 69 +. Global symbol "$query" requires explicit package name at ./foo line 71 +. Global symbol "$query" requires explicit package name at ./foo line 73 +. Execution of ./foo aborted due to compilation errors.

See why it's important?

Remember: Ne dederis in spiritu molere illegitimi!