in reply to Win32 CSIDL_LOCAL_APPDATA

The good new first:
The program runs fine on my system (XP, AS Perl 5.8.6)

I'm puzzled about the "isn't numeric" warning: As I understand it, it's not supposed to be numeric because it'a a path
No. The return value of GetFolderPath is a path. The CSIDL_LOCAL_APPDATA is a numeric constant that tells the function which path to return.

Note that code in the style of
if ($something) { use Some::Module; }
does not DWYM. use is a compile time statement. There are some nodes about conditionally loading modules at runtime here. Go Super Search.

Also you show poor style in your use of the ternary operator. Better write that as
print defined $realhome ? "realhome: $realhome\n" : "\$realhome not d +efined\n";


holli, /regexed monk/

Replies are listed 'Best First'.
Re^2: Win32 CSIDL_LOCAL_APPDATA
by jkeenan1 (Deacon) on Aug 23, 2005 at 14:33 UTC
    holli wrote:

    The good new first: The program runs fine on my system (XP, AS Perl 5.8.6)

    I'm using Win2000 Pro, Active Perl 5.8.7. I don't think that should be the source of the problem.

    The return value of GetFolderPath is a path. The CSIDL_LOCAL_APPDATA is a numeric constant that tells the function which path to return.

    Okay, but that doesn't solve the mystery as to why it's not returning the same path that the command-line invocation did.

    Note that code in the style of if ($something) {use Some::Module;} does not DWYM. use is a compile time statement. There are some nodes about conditionally loading modules at runtime here.

    Correct, but I got the same results using require:

    use strict; use warnings; use Exporter qw(import); my $realhome; if ($^O eq 'MSWin32') { require Win32; import ('CSIDL_LOCAL_APPDATA'); $realhome = Win32::GetFolderPath('CSIDL_LOCAL_APPDATA'); }

    jimk

      I'm sticking some *n*x bias in this question, but are you sure your CLI execution is from the same point on the path as your scripted execution?
        I'm executing both from the same directory, so I guess the answer is yes.

        jimk