in reply to Win32::API question
$SysParam->Call( 20, 0, $filename, \x1 ); That causes the following error under use strict; "Bareword "x1" not allowed while "strict subs" in use"
Not sure what you were trying to do with that? The last parameter should be a 1 or 0.
Note that this unfortunately will not change the wallpaper if you use ActiveDesktop (at least on NT/Win2K). I haven't figured out a way to change the ActiveDesktop wallpaper from perl yet. It will change the wallpaper you see when the screen is locked or logged out but not the ActiveDesktop wallpaper (what's on your desktop when you're using the computer).
Update:I just recalled that in the past with certain versions of Win32::API and ActiveState perl (don't recall which) I had trouble with the parameters string for Win32::API. If you still have trouble, try changing your method import line to this (use an array ref instead of a string):
my $SysParam = new Win32::API( 'User32', 'SystemParametersInfo', [ qw( +N N P N) ], 'N' );