in reply to for ($@)


This looks to me like a first revision which was intended to be developed further. As mentioned by hardburn the for ($@) sets $_ to the value of $@. Why would we want to do that? So we could then do something like:

eval { # bla bla }; for ($@) { /NOT FOUND/ && do { print 'Where'd I put that?'; last; }; print 'Na,ah. Not for you!' if /FORBIDDEN/; }

Each of those is testing the string value of $@