http://www.perlmonks.org?node_id=119495

myocom has asked for the wisdom of the Perl Monks concerning the following question:

I'm writing a script to check to make sure files in a given directory are localized to a given language. The way to check this is to look at the Language attribute returned by Win32::AdminMisc's GetFileInfo() function. I've stumbled across a runtime error, though, that crashes Perl quite spectactularly. It only happens on certain files, but I can consistently reproduce the error with Perl 5.005 or 5.6.1, on both Windows 2000 and Windows XP. I could get around it by keeping a list of known-troublesome-files, but that's kludgy as all get out.

Here's a minimal case that always crashes when it gets to catsrv.dll:

use strict; use Win32::AdminMisc; for (glob($ENV{SystemRoot}.'/system32/c*.dll')) { print "$_ --"; my %attr; Win32::AdminMisc::GetFileInfo($_, \%attr); print join(' ',keys %attr), "\n\n"; }

Any ideas, anyone? I have an email in to Dave Roth, but I'm hoping I'm just missing something...

"One word of warning: if you meet a bunch of Perl programmers on the bus or something, don't look them in the eye. They've been known to try to convert the young into Perl monks." - Frank Willison

Replies are listed 'Best First'.
Re: Runtime exception with Win32::AdminMisc::GetFileInfo
by myocom (Deacon) on Oct 18, 2001 at 22:09 UTC

    Well, word from Dave Roth is that this is now on his ever-growing list of things to fix. So, no joy for me...back to my workaround of shelling out and running an external program to get this attribute. Thanks to those who /msg'd me with suggestions!

    "One word of warning: if you meet a bunch of Perl programmers on the bus or something, don't look them in the eye. They've been known to try to convert the young into Perl monks." - Frank Willison