use Errno; sub Fudge { my @r; while( my($k,$v)=each %!){ $v and push @r, $k } join qq/\n/, int($!).q/ /.$!, int($^E).q/ /.$^E, @r, q/ / } open my($fh),qw/ < ./ or die Fudge(); __END__ 13 Permission denied 5 Access is denied ERROR_INVALID_DATA EMR_SETBRUSHORGEX EACCES at - line 13.