http://qs321.pair.com?node_id=755558

Win32 BrowseForFolder. Creates a dialog box that enables the user to select a folder. This small procedure is part of a larger programm that lets you choose a directory and manipulate its contents i.e combines nicely with File::Find
use Win32::API; use Cwd; sub choose_dir { $SHBrowseForFolder=new Win32::API('shell32.dll','SHBrowseForFolder +','P','N'); $SHGetPathFromIDList=new Win32::API('shell32.dll','SHGetPathFromID +List','NP','N'); my $display="CHOOSE starting directory..."; my $BrowseInfo=pack('LLLpLLLL',0,0,0,$display,0,0,0,0,0); my $pidl=$SHBrowseForFolder->Call($BrowseInfo); my $dir=pack('x100'); $SHGetPathFromIDList->Call($pidl,$dir); $dir =~ s/\0//g; chdir $dir; print "current dir: ",cwd(); } choose_dir;